aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruzhas <uzhas@yandex-team.ru>2022-02-10 16:47:06 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:47:06 +0300
commit2002caab389ddffd0e7db4d8c4db835fa4c99f83 (patch)
tree9d3448d5ba97edddf88aa69bcb138e88286e8176
parent17d51d51855dc3ed663d0e31fa75d3ff5ab80702 (diff)
downloadydb-2002caab389ddffd0e7db4d8c4db835fa4c99f83.tar.gz
Restoring authorship annotation for <uzhas@yandex-team.ru>. Commit 1 of 2.
-rw-r--r--contrib/libs/ya.make2
-rw-r--r--library/cpp/actors/core/event_pb_payload_ut.cpp90
-rw-r--r--library/cpp/grpc/client/grpc_client_low.h14
-rw-r--r--library/cpp/http/server/http.cpp16
-rw-r--r--library/cpp/json/writer/json_value.h4
-rw-r--r--library/cpp/lwtrace/mon/mon_lwtrace.cpp10
-rw-r--r--library/cpp/messagebus/message.h10
-rw-r--r--library/cpp/messagebus/message_ptr_and_header.h4
-rw-r--r--library/cpp/messagebus/network.cpp88
-rw-r--r--library/cpp/messagebus/network_ut.cpp6
-rw-r--r--library/cpp/monlib/service/monservice.cpp4
-rw-r--r--library/python/ya.make4
-rw-r--r--util/generic/algorithm_ut.cpp8
-rw-r--r--util/network/ip.h6
-rw-r--r--ydb/core/base/appdata.h16
-rw-r--r--ydb/core/base/tablet.cpp4
-rw-r--r--ydb/core/base/tablet.h2
-rw-r--r--ydb/core/base/tablet_resolver.h2
-rw-r--r--ydb/core/blobstorage/dsproxy/dsproxy_state.cpp8
-rw-r--r--ydb/core/blobstorage/incrhuge/incrhuge_keeper_defrag.cpp2
-rw-r--r--ydb/core/blobstorage/incrhuge/incrhuge_keeper_recovery_scan.cpp4
-rw-r--r--ydb/core/blobstorage/incrhuge/incrhuge_keeper_write.cpp4
-rw-r--r--ydb/core/blobstorage/nodewarden/node_warden_impl.cpp2
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp6
-rw-r--r--ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.h4
-rw-r--r--ydb/core/blobstorage/vdisk/hulldb/generic/blobstorage_hullwritesst.h6
-rw-r--r--ydb/core/blobstorage/vdisk/ingress/blobstorage_ingress.cpp8
-rw-r--r--ydb/core/blobstorage/vdisk/scrub/blob_recovery_request.cpp2
-rw-r--r--ydb/core/blobstorage/vdisk/synclog/blobstorage_synclogdsk.cpp4
-rw-r--r--ydb/core/client/server/grpc_server.h2
-rw-r--r--ydb/core/client/server/msgbus_server.h2
-rw-r--r--ydb/core/client/server/msgbus_server_cms.cpp2
-rw-r--r--ydb/core/client/server/msgbus_server_console.cpp2
-rw-r--r--ydb/core/client/server/msgbus_tabletreq.h2
-rw-r--r--ydb/core/cms/cluster_info.h4
-rw-r--r--ydb/core/driver_lib/cli_base/cli_cmds_db.cpp44
-rw-r--r--ydb/core/driver_lib/cli_base/cli_cmds_discovery.cpp2
-rw-r--r--ydb/core/driver_lib/cli_base/cli_cmds_root.cpp6
-rw-r--r--ydb/core/driver_lib/cli_base/cli_grpc.h4
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_admin.cpp12
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_bs.cpp10
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp102
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_config.cpp10
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_console.cpp22
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_debug.cpp12
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_disk.cpp10
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_genconfig.cpp6
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_get.cpp6
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_group.cpp8
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_node.cpp6
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_root.cpp10
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp4
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_tablet.cpp16
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_tenant.cpp26
-rw-r--r--ydb/core/driver_lib/run/kikimr_services_initializers.cpp4
-rw-r--r--ydb/core/engine/mkql_engine_flat_ut.cpp84
-rw-r--r--ydb/core/erasure/erasure.cpp22
-rw-r--r--ydb/core/grpc_services/rpc_alter_table.cpp4
-rw-r--r--ydb/core/grpc_services/rpc_cancel_operation.cpp2
-rw-r--r--ydb/core/grpc_services/rpc_forget_operation.cpp2
-rw-r--r--ydb/core/grpc_services/rpc_get_operation.cpp2
-rw-r--r--ydb/core/grpc_services/rpc_read_columns.cpp4
-rw-r--r--ydb/core/grpc_services/rpc_yq.cpp4
-rw-r--r--ydb/core/kqp/common/kqp_gateway.h2
-rw-r--r--ydb/core/kqp/executer/kqp_partition_helper.cpp2
-rw-r--r--ydb/core/kqp/host/kqp_host.cpp2
-rw-r--r--ydb/core/kqp/host/kqp_run_scan.cpp4
-rw-r--r--ydb/core/kqp/host/kqp_runner.cpp2
-rw-r--r--ydb/core/kqp/kqp_ic_gateway.cpp18
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_datasource.cpp2
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_gateway.cpp2
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_provider.cpp8
-rw-r--r--ydb/core/kqp/provider/yql_kikimr_results.cpp10
-rw-r--r--ydb/core/mind/bscontroller/group_geometry_info.h4
-rw-r--r--ydb/core/mind/bscontroller/impl.h4
-rw-r--r--ydb/core/mind/configured_tablet_bootstrapper.cpp2
-rw-r--r--ydb/core/mind/hive/hive_impl.cpp16
-rw-r--r--ydb/core/mind/hive/monitoring.cpp6
-rw-r--r--ydb/core/mind/local.cpp2
-rw-r--r--ydb/core/mind/table_adapter.h10
-rw-r--r--ydb/core/mon/mon.h2
-rw-r--r--ydb/core/mon/ya.make2
-rw-r--r--ydb/core/mon_alloc/profiler.cpp18
-rw-r--r--ydb/core/mon_alloc/profiler.h14
-rw-r--r--ydb/core/persqueue/key.h2
-rw-r--r--ydb/core/persqueue/partition.cpp4
-rw-r--r--ydb/core/persqueue/type_coders.h2
-rw-r--r--ydb/core/protos/services.proto64
-rw-r--r--ydb/core/tablet/tablet_counters.h12
-rw-r--r--ydb/core/tablet/tablet_req_blockbs.cpp2
-rw-r--r--ydb/core/tablet/tablet_sys.cpp18
-rw-r--r--ydb/core/tablet/tablet_sys.h2
-rw-r--r--ydb/core/tablet_flat/flat_executor_borrowlogic.cpp4
-rw-r--r--ydb/core/tablet_flat/flat_page_frames.h2
-rw-r--r--ydb/core/tablet_flat/flat_range_cache.cpp8
-rw-r--r--ydb/core/tablet_flat/flat_redo_writer.h8
-rw-r--r--ydb/core/tablet_flat/flat_scan_actor.h2
-rw-r--r--ydb/core/tablet_flat/flat_util_binary.h4
-rw-r--r--ydb/core/tablet_flat/util_deref.h6
-rw-r--r--ydb/core/tx/datashard/datashard__conditional_erase_rows.cpp2
-rw-r--r--ydb/core/tx/datashard/datashard__init.cpp4
-rw-r--r--ydb/core/tx/datashard/datashard_active_transaction.h2
-rw-r--r--ydb/core/tx/datashard/datashard_distributed_erase.cpp2
-rw-r--r--ydb/core/tx/datashard/datashard_impl.h4
-rw-r--r--ydb/core/tx/datashard/datashard_split_dst.cpp2
-rw-r--r--ydb/core/tx/datashard/datashard_split_src.cpp2
-rw-r--r--ydb/core/tx/datashard/datashard_switch_mvcc_state.cpp4
-rw-r--r--ydb/core/tx/datashard/datashard_user_table.h6
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__init.cpp6
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_split_merge.cpp4
-rw-r--r--ydb/core/tx/schemeshard/schemeshard_tx_infly.h2
-rw-r--r--ydb/core/tx/tx_proxy/read_table_impl.cpp4
-rw-r--r--ydb/core/tx/tx_proxy/storage_tenant_ut.cpp2
-rw-r--r--ydb/core/util/hazard.cpp2
-rw-r--r--ydb/core/viewer/json_browse.h4
-rw-r--r--ydb/core/viewer/json_bscontrollerinfo.h2
-rw-r--r--ydb/core/viewer/json_compute.h2
-rw-r--r--ydb/core/viewer/json_describe.h2
-rw-r--r--ydb/core/viewer/json_healthcheck.h2
-rw-r--r--ydb/core/viewer/json_hiveinfo.h2
-rw-r--r--ydb/core/viewer/json_hivestats.h2
-rw-r--r--ydb/core/viewer/json_hotkeys.h8
-rw-r--r--ydb/core/viewer/json_labeledcounters.h2
-rw-r--r--ydb/core/viewer/json_metainfo.h4
-rw-r--r--ydb/core/viewer/json_netinfo.h2
-rw-r--r--ydb/core/viewer/json_nodes.h6
-rw-r--r--ydb/core/viewer/json_pqconsumerinfo.h4
-rw-r--r--ydb/core/viewer/json_query.h2
-rw-r--r--ydb/core/viewer/json_storage.h2
-rw-r--r--ydb/core/viewer/json_tabletcounters.h4
-rw-r--r--ydb/core/viewer/json_tenantinfo.h8
-rw-r--r--ydb/core/viewer/json_tenants.h2
-rw-r--r--ydb/core/viewer/json_topicinfo.h4
-rw-r--r--ydb/core/viewer/json_wb_req.h6
-rw-r--r--ydb/core/viewer/protos/viewer.proto2
-rw-r--r--ydb/core/yq/libs/actors/clusters_from_connections.cpp234
-rw-r--r--ydb/core/yq/libs/actors/clusters_from_connections.h18
-rw-r--r--ydb/core/yq/libs/actors/database_resolver.cpp106
-rw-r--r--ydb/core/yq/libs/actors/pending_fetcher.cpp16
-rw-r--r--ydb/core/yq/libs/actors/proxy.h2
-rw-r--r--ydb/core/yq/libs/actors/result_writer.cpp6
-rw-r--r--ydb/core/yq/libs/actors/run_actor.cpp250
-rw-r--r--ydb/core/yq/libs/actors/run_actor_params.cpp16
-rw-r--r--ydb/core/yq/libs/actors/run_actor_params.h16
-rw-r--r--ydb/core/yq/libs/actors/system_clusters.cpp206
-rw-r--r--ydb/core/yq/libs/actors/system_clusters.h6
-rw-r--r--ydb/core/yq/libs/actors/table_bindings_from_bindings.cpp138
-rw-r--r--ydb/core/yq/libs/actors/table_bindings_from_bindings.h8
-rw-r--r--ydb/core/yq/libs/actors/task_get.cpp6
-rw-r--r--ydb/core/yq/libs/actors/ya.make20
-rw-r--r--ydb/core/yq/libs/checkpointing/ut/ya.make4
-rw-r--r--ydb/core/yq/libs/checkpointing/ya.make2
-rw-r--r--ydb/core/yq/libs/common/database_token_builder.h2
-rw-r--r--ydb/core/yq/libs/common/ya.make2
-rw-r--r--ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp2
-rw-r--r--ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto2
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ya.make6
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp2
-rw-r--r--ydb/core/yq/libs/events/events.h60
-rw-r--r--ydb/core/yq/libs/gateway/ya.make2
-rw-r--r--ydb/core/yq/libs/hmac/hmac.cpp40
-rw-r--r--ydb/core/yq/libs/hmac/hmac.h16
-rw-r--r--ydb/core/yq/libs/hmac/ut/hmac_ut.cpp32
-rw-r--r--ydb/core/yq/libs/hmac/ut/ya.make20
-rw-r--r--ydb/core/yq/libs/hmac/ya.make34
-rw-r--r--ydb/core/yq/libs/result_formatter/result_formatter.cpp36
-rw-r--r--ydb/core/yq/libs/result_formatter/result_formatter.h2
-rw-r--r--ydb/core/yq/libs/result_formatter/result_formatter_ut.cpp44
-rw-r--r--ydb/core/yq/libs/signer/signer.cpp58
-rw-r--r--ydb/core/yq/libs/signer/signer.h60
-rw-r--r--ydb/core/yq/libs/signer/ut/signer_ut.cpp24
-rw-r--r--ydb/core/yq/libs/signer/ut/ya.make20
-rw-r--r--ydb/core/yq/libs/signer/ya.make30
-rw-r--r--ydb/core/yq/libs/ya.make2
-rw-r--r--ydb/library/aclib/protos/aclib.proto2
-rw-r--r--ydb/library/aclib/protos/ya.make2
-rw-r--r--ydb/library/mkql_proto/mkql_proto.cpp24
-rw-r--r--ydb/library/mkql_proto/mkql_proto.h4
-rw-r--r--ydb/library/mkql_proto/mkql_proto_ut.cpp130
-rw-r--r--ydb/library/mkql_proto/ut/helpers/helpers.h8
-rw-r--r--ydb/library/yql/ast/yql_ast_ut.cpp24
-rw-r--r--ydb/library/yql/ast/yql_expr.cpp74
-rw-r--r--ydb/library/yql/ast/yql_expr.h4
-rw-r--r--ydb/library/yql/ast/yql_expr_builder.cpp4
-rw-r--r--ydb/library/yql/core/common_opt/yql_co_simple1.cpp36
-rw-r--r--ydb/library/yql/core/facade/yql_facade.cpp264
-rw-r--r--ydb/library/yql/core/facade/yql_facade.h80
-rw-r--r--ydb/library/yql/core/file_storage/download_stream.cpp38
-rw-r--r--ydb/library/yql/core/file_storage/download_stream.h42
-rw-r--r--ydb/library/yql/core/file_storage/file_storage.cpp248
-rw-r--r--ydb/library/yql/core/file_storage/file_storage.h14
-rw-r--r--ydb/library/yql/core/file_storage/file_storage_ut.cpp920
-rw-r--r--ydb/library/yql/core/file_storage/http_download/pattern_group.cpp66
-rw-r--r--ydb/library/yql/core/file_storage/http_download/pattern_group.h38
-rw-r--r--ydb/library/yql/core/file_storage/http_download/pattern_group_ut.cpp68
-rw-r--r--ydb/library/yql/core/file_storage/proto/file_storage.proto14
-rw-r--r--ydb/library/yql/core/file_storage/storage.cpp300
-rw-r--r--ydb/library/yql/core/file_storage/storage.h50
-rw-r--r--ydb/library/yql/core/file_storage/storage_ut.cpp14
-rw-r--r--ydb/library/yql/core/file_storage/url_mapper.cpp34
-rw-r--r--ydb/library/yql/core/file_storage/url_mapper.h58
-rw-r--r--ydb/library/yql/core/file_storage/url_mapper_ut.cpp88
-rw-r--r--ydb/library/yql/core/file_storage/url_meta.cpp126
-rw-r--r--ydb/library/yql/core/file_storage/url_meta.h34
-rw-r--r--ydb/library/yql/core/file_storage/ut/test_http_server.cpp292
-rw-r--r--ydb/library/yql/core/file_storage/ut/test_http_server.h150
-rw-r--r--ydb/library/yql/core/file_storage/ut/ya.make6
-rw-r--r--ydb/library/yql/core/file_storage/ya.make20
-rw-r--r--ydb/library/yql/core/issue/protos/issue_id.proto10
-rw-r--r--ydb/library/yql/core/issue/yql_issue.txt24
-rw-r--r--ydb/library/yql/core/services/mounts/yql_mounts.cpp22
-rw-r--r--ydb/library/yql/core/services/mounts/yql_mounts.h4
-rw-r--r--ydb/library/yql/core/services/yql_eval_expr.cpp2
-rw-r--r--ydb/library/yql/core/services/yql_eval_params.cpp186
-rw-r--r--ydb/library/yql/core/services/yql_eval_params.h4
-rw-r--r--ydb/library/yql/core/services/yql_plan.cpp2
-rw-r--r--ydb/library/yql/core/type_ann/type_ann_core.cpp82
-rw-r--r--ydb/library/yql/core/type_ann/type_ann_impl.h4
-rw-r--r--ydb/library/yql/core/ya.make26
-rw-r--r--ydb/library/yql/core/yql_data_provider.h4
-rw-r--r--ydb/library/yql/core/yql_expr_type_annotation.cpp46
-rw-r--r--ydb/library/yql/core/yql_holding_file_storage.cpp224
-rw-r--r--ydb/library/yql/core/yql_holding_file_storage.h86
-rw-r--r--ydb/library/yql/core/yql_library_compiler.cpp42
-rw-r--r--ydb/library/yql/core/yql_library_compiler.h2
-rw-r--r--ydb/library/yql/core/yql_type_annotation.cpp340
-rw-r--r--ydb/library/yql/core/yql_type_annotation.h82
-rw-r--r--ydb/library/yql/core/yql_udf_index.cpp454
-rw-r--r--ydb/library/yql/core/yql_udf_index.h256
-rw-r--r--ydb/library/yql/core/yql_udf_index_package_set.cpp120
-rw-r--r--ydb/library/yql/core/yql_udf_index_package_set.h58
-rw-r--r--ydb/library/yql/core/yql_udf_resolver.cpp66
-rw-r--r--ydb/library/yql/core/yql_udf_resolver.h142
-rw-r--r--ydb/library/yql/core/yql_user_data.cpp2
-rw-r--r--ydb/library/yql/core/yql_user_data.h200
-rw-r--r--ydb/library/yql/core/yql_user_data_storage.cpp702
-rw-r--r--ydb/library/yql/core/yql_user_data_storage.h174
-rw-r--r--ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h6
-rw-r--r--ydb/library/yql/dq/actors/protos/dq_events.proto20
-rw-r--r--ydb/library/yql/dq/opt/dq_opt.h2
-rw-r--r--ydb/library/yql/minikql/codegen/codegen.cpp8
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp4
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_join.cpp6
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_multihopping.cpp4
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp4
-rw-r--r--ydb/library/yql/minikql/comp_nodes/ya.make4
-rw-r--r--ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp46
-rw-r--r--ydb/library/yql/minikql/computation/mkql_validate_impl.h2
-rw-r--r--ydb/library/yql/minikql/mkql_function_registry.cpp18
-rw-r--r--ydb/library/yql/minikql/mkql_node.cpp2
-rw-r--r--ydb/library/yql/minikql/mkql_node_serialization.cpp4
-rw-r--r--ydb/library/yql/minikql/mkql_node_visitor.cpp2
-rw-r--r--ydb/library/yql/minikql/mkql_stats_registry.cpp4
-rw-r--r--ydb/library/yql/minikql/mkql_stats_registry.h34
-rw-r--r--ydb/library/yql/minikql/mkql_stats_registry_ut.cpp10
-rw-r--r--ydb/library/yql/minikql/mkql_type_builder.cpp6
-rw-r--r--ydb/library/yql/parser/proto_ast/collect_issues/collect_issues.h38
-rw-r--r--ydb/library/yql/parser/proto_ast/proto_ast.cpp20
-rw-r--r--ydb/library/yql/parser/proto_ast/proto_ast.h18
-rw-r--r--ydb/library/yql/providers/common/codec/ya.make8
-rw-r--r--ydb/library/yql/providers/common/codec/yql_codec.cpp580
-rw-r--r--ydb/library/yql/providers/common/codec/yql_codec.h14
-rw-r--r--ydb/library/yql/providers/common/codec/yql_codec_buf.cpp4
-rw-r--r--ydb/library/yql/providers/common/codec/yql_codec_results.cpp42
-rw-r--r--ydb/library/yql/providers/common/codec/yql_codec_results.h60
-rw-r--r--ydb/library/yql/providers/common/codec/yql_restricted_yson.cpp588
-rw-r--r--ydb/library/yql/providers/common/codec/yql_restricted_yson.h42
-rw-r--r--ydb/library/yql/providers/common/codec/yql_restricted_yson_ut.cpp178
-rw-r--r--ydb/library/yql/providers/common/config/yql_dispatch.cpp10
-rw-r--r--ydb/library/yql/providers/common/http_gateway/ya.make2
-rw-r--r--ydb/library/yql/providers/common/metrics/metrics_registry.cpp46
-rw-r--r--ydb/library/yql/providers/common/metrics/metrics_registry.h12
-rw-r--r--ydb/library/yql/providers/common/proto/gateways_config.proto152
-rw-r--r--ydb/library/yql/providers/common/proto/udf_resolver.proto36
-rw-r--r--ydb/library/yql/providers/common/provider/yql_provider.cpp84
-rw-r--r--ydb/library/yql/providers/common/provider/yql_provider.h2
-rw-r--r--ydb/library/yql/providers/common/structured_token/ut/ya.make20
-rw-r--r--ydb/library/yql/providers/common/structured_token/ut/yql_structured_token_ut.cpp152
-rw-r--r--ydb/library/yql/providers/common/structured_token/ut/yql_token_builder_ut.cpp186
-rw-r--r--ydb/library/yql/providers/common/structured_token/ya.make42
-rw-r--r--ydb/library/yql/providers/common/structured_token/yql_structured_token.cpp166
-rw-r--r--ydb/library/yql/providers/common/structured_token/yql_structured_token.h60
-rw-r--r--ydb/library/yql/providers/common/structured_token/yql_token_builder.cpp204
-rw-r--r--ydb/library/yql/providers/common/structured_token/yql_token_builder.h84
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.cpp108
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.h20
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/factory.cpp164
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/factory.h48
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.cpp366
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.h32
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.cpp116
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.h34
-rw-r--r--ydb/library/yql/providers/common/token_accessor/client/ya.make32
-rw-r--r--ydb/library/yql/providers/common/token_accessor/grpc/token_accessor_pb.proto46
-rw-r--r--ydb/library/yql/providers/common/token_accessor/grpc/ya.make18
-rw-r--r--ydb/library/yql/providers/common/token_accessor/ya.make8
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_files_box.cpp106
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_files_box.h64
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp496
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.h12
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp144
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.h12
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp454
-rw-r--r--ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.h20
-rw-r--r--ydb/library/yql/providers/dq/actors/full_result_writer.cpp2
-rw-r--r--ydb/library/yql/providers/dq/actors/proto_builder.cpp8
-rw-r--r--ydb/library/yql/providers/dq/actors/proto_builder.h10
-rw-r--r--ydb/library/yql/providers/dq/actors/result_aggregator.cpp2
-rw-r--r--ydb/library/yql/providers/dq/actors/result_receiver.cpp2
-rw-r--r--ydb/library/yql/providers/dq/actors/task_controller.cpp46
-rw-r--r--ydb/library/yql/providers/dq/api/protos/task_command_executor.proto30
-rw-r--r--ydb/library/yql/providers/dq/counters/counters.h28
-rw-r--r--ydb/library/yql/providers/dq/local_gateway/yql_dq_gateway_local.cpp14
-rw-r--r--ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp4
-rw-r--r--ydb/library/yql/providers/dq/runtime/task_command_executor.cpp170
-rw-r--r--ydb/library/yql/providers/dq/task_runner/tasks_runner_local.cpp8
-rw-r--r--ydb/library/yql/providers/dq/task_runner/tasks_runner_pipe.cpp304
-rw-r--r--ydb/library/yql/providers/dq/task_runner/tasks_runner_proxy.h4
-rw-r--r--ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.cpp50
-rw-r--r--ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.h14
-rw-r--r--ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.cpp32
-rw-r--r--ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.h6
-rw-r--r--ydb/library/yql/providers/pq/cm_client/interface/client.h2
-rw-r--r--ydb/library/yql/providers/pq/cm_client/lib/client.cpp4
-rw-r--r--ydb/library/yql/providers/pq/cm_client/lib/client.h2
-rw-r--r--ydb/library/yql/providers/pq/common/yql_names.h2
-rw-r--r--ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.h42
-rw-r--r--ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.json76
-rw-r--r--ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.cpp6
-rw-r--r--ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.h6
-rw-r--r--ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.cpp28
-rw-r--r--ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.h6
-rw-r--r--ydb/library/yql/providers/pq/gateway/native/yql_pq_session.cpp64
-rw-r--r--ydb/library/yql/providers/pq/gateway/native/yql_pq_session.h22
-rw-r--r--ydb/library/yql/providers/pq/proto/dq_io.proto4
-rw-r--r--ydb/library/yql/providers/pq/provider/ut/ya.make42
-rw-r--r--ydb/library/yql/providers/pq/provider/ya.make6
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_datasink.cpp134
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_datasink_type_ann.cpp110
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_datasource.cpp70
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_datasource_type_ann.cpp72
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_dq_integration.cpp164
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_gateway.h4
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_io_discovery.cpp80
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_load_meta.cpp86
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_logical_opt.cpp8
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.cpp30
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.h2
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_physical_optimize.cpp26
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_provider.cpp10
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_provider.h18
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.cpp18
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.h12
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_settings.cpp2
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_settings.h12
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp72
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.h52
-rw-r--r--ydb/library/yql/providers/pq/provider/yql_pq_ut.cpp382
-rw-r--r--ydb/library/yql/providers/s3/actors/ya.make2
-rw-r--r--ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp2
-rw-r--r--ydb/library/yql/providers/s3/actors/yql_s3_read_actor.h2
-rw-r--r--ydb/library/yql/providers/s3/actors/yql_s3_source_factory.h2
-rw-r--r--ydb/library/yql/providers/s3/expr_nodes/ya.make2
-rw-r--r--ydb/library/yql/providers/s3/expr_nodes/yql_s3_expr_nodes.json2
-rw-r--r--ydb/library/yql/providers/s3/proto/ya.make8
-rw-r--r--ydb/library/yql/providers/s3/provider/ya.make2
-rw-r--r--ydb/library/yql/providers/s3/provider/yql_s3_dq_integration.cpp8
-rw-r--r--ydb/library/yql/providers/s3/provider/yql_s3_io_discovery.cpp38
-rw-r--r--ydb/library/yql/providers/s3/provider/yql_s3_provider.cpp4
-rw-r--r--ydb/library/yql/providers/s3/provider/yql_s3_provider.h2
-rw-r--r--ydb/library/yql/providers/s3/provider/yql_s3_settings.cpp8
-rw-r--r--ydb/library/yql/providers/s3/provider/yql_s3_settings.h2
-rw-r--r--ydb/library/yql/providers/s3/ya.make22
-rw-r--r--ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.cpp40
-rw-r--r--ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.h6
-rw-r--r--ydb/library/yql/providers/solomon/async_io/ut/ut_helpers.cpp4
-rw-r--r--ydb/library/yql/providers/solomon/expr_nodes/yql_solomon_expr_nodes.json2
-rw-r--r--ydb/library/yql/providers/solomon/proto/dq_solomon_shard.proto6
-rw-r--r--ydb/library/yql/providers/solomon/provider/yql_solomon_config.h4
-rw-r--r--ydb/library/yql/providers/solomon/provider/yql_solomon_dq_integration.cpp16
-rw-r--r--ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp14
-rw-r--r--ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.h6
-rw-r--r--ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.cpp2
-rw-r--r--ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.h6
-rw-r--r--ydb/library/yql/providers/ydb/comp_nodes/yql_kik_scan.cpp14
-rw-r--r--ydb/library/yql/providers/ydb/proto/source.proto2
-rw-r--r--ydb/library/yql/providers/ydb/provider/yql_ydb_dq_integration.cpp8
-rw-r--r--ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp6
-rw-r--r--ydb/library/yql/providers/ydb/provider/yql_ydb_provider.cpp2
-rw-r--r--ydb/library/yql/providers/ydb/provider/yql_ydb_provider.h2
-rw-r--r--ydb/library/yql/providers/ydb/provider/yql_ydb_settings.cpp12
-rw-r--r--ydb/library/yql/providers/ydb/provider/yql_ydb_settings.h2
-rw-r--r--ydb/library/yql/providers/ydb/ya.make6
-rw-r--r--ydb/library/yql/public/decimal/ut/yql_decimal_ut.cpp166
-rw-r--r--ydb/library/yql/public/decimal/yql_decimal.cpp62
-rw-r--r--ydb/library/yql/public/issue/yql_issue.h12
-rw-r--r--ydb/library/yql/public/issue/yql_issue_manager.cpp4
-rw-r--r--ydb/library/yql/public/issue/yql_issue_manager_ut.cpp26
-rw-r--r--ydb/library/yql/public/udf/udf_helpers.h62
-rw-r--r--ydb/library/yql/sql/cluster_mapping.cpp66
-rw-r--r--ydb/library/yql/sql/cluster_mapping.h32
-rw-r--r--ydb/library/yql/sql/settings/translation_settings.h2
-rw-r--r--ydb/library/yql/sql/v0/SQL.g14
-rw-r--r--ydb/library/yql/sql/v0/context.cpp22
-rw-r--r--ydb/library/yql/sql/v0/context.h28
-rw-r--r--ydb/library/yql/sql/v0/list_builtin.cpp2
-rw-r--r--ydb/library/yql/sql/v0/node.cpp10
-rw-r--r--ydb/library/yql/sql/v0/node.h2
-rw-r--r--ydb/library/yql/sql/v0/query.cpp14
-rw-r--r--ydb/library/yql/sql/v0/select.cpp44
-rw-r--r--ydb/library/yql/sql/v0/sql.cpp144
-rw-r--r--ydb/library/yql/sql/v0/sql_ut.cpp102
-rw-r--r--ydb/library/yql/sql/v1/SQLv1.g.in8
-rw-r--r--ydb/library/yql/sql/v1/builtin.cpp2
-rw-r--r--ydb/library/yql/sql/v1/context.cpp28
-rw-r--r--ydb/library/yql/sql/v1/context.h44
-rw-r--r--ydb/library/yql/sql/v1/join.cpp8
-rw-r--r--ydb/library/yql/sql/v1/node.cpp6
-rw-r--r--ydb/library/yql/sql/v1/node.h6
-rw-r--r--ydb/library/yql/sql/v1/query.cpp60
-rw-r--r--ydb/library/yql/sql/v1/select.cpp94
-rw-r--r--ydb/library/yql/sql/v1/sql.cpp172
-rw-r--r--ydb/library/yql/sql/v1/sql_ut.cpp228
-rw-r--r--ydb/library/yql/sql/ya.make2
-rw-r--r--ydb/library/yql/udfs/common/datetime2/datetime_udf.cpp406
-rw-r--r--ydb/library/yql/udfs/common/json/json_udf.cpp12
-rw-r--r--ydb/library/yql/udfs/common/math/lib/round.h68
-rw-r--r--ydb/library/yql/udfs/common/math/lib/round_ut.cpp106
-rw-r--r--ydb/library/yql/udfs/common/math/math_ir.h26
-rw-r--r--ydb/library/yql/udfs/common/math/math_udf.cpp4
-rw-r--r--ydb/library/yql/udfs/common/math/ya.make4
-rw-r--r--ydb/library/yql/udfs/common/re2/re2_udf.cpp4
-rw-r--r--ydb/library/yql/udfs/common/string/string_udf.cpp52
-rw-r--r--ydb/library/yql/udfs/logs/dsv/dsv_udf.cpp2
-rw-r--r--ydb/library/yql/utils/backtrace/backtrace.cpp14
-rw-r--r--ydb/library/yql/utils/bind_in_range.cpp50
-rw-r--r--ydb/library/yql/utils/bind_in_range.h12
-rw-r--r--ydb/library/yql/utils/fetch/fetch.cpp24
-rw-r--r--ydb/library/yql/utils/future_action.cpp2
-rw-r--r--ydb/library/yql/utils/future_action.h116
-rw-r--r--ydb/library/yql/utils/md5_stream.cpp40
-rw-r--r--ydb/library/yql/utils/md5_stream.h36
-rw-r--r--ydb/library/yql/utils/md5_stream_ut.cpp84
-rw-r--r--ydb/library/yql/utils/multi_resource_lock.cpp82
-rw-r--r--ydb/library/yql/utils/multi_resource_lock.h162
-rw-r--r--ydb/library/yql/utils/multi_resource_lock_ut.cpp96
-rw-r--r--ydb/library/yql/utils/parse_double.cpp134
-rw-r--r--ydb/library/yql/utils/parse_double.h36
-rw-r--r--ydb/library/yql/utils/parse_double_ut.cpp58
-rw-r--r--ydb/library/yql/utils/rand_guid.cpp62
-rw-r--r--ydb/library/yql/utils/rand_guid.h44
-rw-r--r--ydb/library/yql/utils/range_walker.h94
-rw-r--r--ydb/library/yql/utils/range_walker_ut.cpp60
-rw-r--r--ydb/library/yql/utils/retry.cpp2
-rw-r--r--ydb/library/yql/utils/retry.h34
-rw-r--r--ydb/library/yql/utils/retry_ut.cpp132
-rw-r--r--ydb/library/yql/utils/ut/ya.make24
-rw-r--r--ydb/library/yql/utils/ya.make34
-rw-r--r--ydb/public/api/protos/yq.proto2
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_profile.cpp12
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_root_common.cpp22
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_discovery.cpp4
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_export.cpp4
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_import.cpp8
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_operation.cpp8
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp20
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_scripting.cpp2
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_stream.cpp12
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_service_table.cpp34
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_tools.cpp8
-rw-r--r--ydb/public/lib/ydb_cli/common/command.cpp6
-rw-r--r--ydb/public/lib/ydb_cli/common/command.h4
-rw-r--r--ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/actions.h2
-rw-r--r--ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/common.h2
-rw-r--r--ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp6
-rw-r--r--ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.cpp4
-rw-r--r--ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.h10
-rw-r--r--ydb/services/yq/ut_integration/ya.make2
-rw-r--r--ydb/services/yq/ut_integration/yq_ut.cpp2
479 files changed, 10578 insertions, 10578 deletions
diff --git a/contrib/libs/ya.make b/contrib/libs/ya.make
index 9c4640fdcf..79334bc261 100644
--- a/contrib/libs/ya.make
+++ b/contrib/libs/ya.make
@@ -143,7 +143,7 @@ RECURSE(
libde265
libdivide
libdivsufsort2
- libeatmydata/dynamic
+ libeatmydata/dynamic
libev
libevent
libexslt
diff --git a/library/cpp/actors/core/event_pb_payload_ut.cpp b/library/cpp/actors/core/event_pb_payload_ut.cpp
index eab007bc15..8f2f1ef369 100644
--- a/library/cpp/actors/core/event_pb_payload_ut.cpp
+++ b/library/cpp/actors/core/event_pb_payload_ut.cpp
@@ -9,21 +9,21 @@ using namespace NActors;
enum {
EvMessageWithPayload = EventSpaceBegin(TEvents::ES_PRIVATE),
EvArenaMessage,
- EvArenaMessageBig,
- EvMessageWithPayloadPreSerialized
+ EvArenaMessageBig,
+ EvMessageWithPayloadPreSerialized
};
struct TEvMessageWithPayload : TEventPB<TEvMessageWithPayload, TMessageWithPayload, EvMessageWithPayload> {
- TEvMessageWithPayload() = default;
- explicit TEvMessageWithPayload(const TMessageWithPayload& p)
- : TEventPB<TEvMessageWithPayload, TMessageWithPayload, EvMessageWithPayload>(p)
- {}
+ TEvMessageWithPayload() = default;
+ explicit TEvMessageWithPayload(const TMessageWithPayload& p)
+ : TEventPB<TEvMessageWithPayload, TMessageWithPayload, EvMessageWithPayload>(p)
+ {}
};
-struct TEvMessageWithPayloadPreSerialized : TEventPreSerializedPB<TEvMessageWithPayloadPreSerialized, TMessageWithPayload, EvMessageWithPayloadPreSerialized> {
-};
-
-
+struct TEvMessageWithPayloadPreSerialized : TEventPreSerializedPB<TEvMessageWithPayloadPreSerialized, TMessageWithPayload, EvMessageWithPayloadPreSerialized> {
+};
+
+
TRope MakeStringRope(const TString& message) {
return message ? TRope(message) : TRope();
}
@@ -113,42 +113,42 @@ Y_UNIT_TEST_SUITE(TEventProtoWithPayload) {
TestSerializeDeserialize<TEvArenaMessage, TEvArenaMessageWithoutArena>(200, 14010);
TestSerializeDeserialize<TEvArenaMessageWithoutArena, TEvArenaMessage>(2000, 4010);
}
-
- Y_UNIT_TEST(PreSerializedCompatibility) {
- // ensure TEventPreSerializedPB and TEventPB are interchangable with no compatibility issues
- TMessageWithPayload msg;
- msg.SetMeta("hello, world!");
- msg.AddPayloadId(123);
- msg.AddPayloadId(999);
- msg.AddSomeData("abc");
- msg.AddSomeData("xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
-
- TEvMessageWithPayloadPreSerialized e1;
+
+ Y_UNIT_TEST(PreSerializedCompatibility) {
+ // ensure TEventPreSerializedPB and TEventPB are interchangable with no compatibility issues
+ TMessageWithPayload msg;
+ msg.SetMeta("hello, world!");
+ msg.AddPayloadId(123);
+ msg.AddPayloadId(999);
+ msg.AddSomeData("abc");
+ msg.AddSomeData("xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
+
+ TEvMessageWithPayloadPreSerialized e1;
Y_PROTOBUF_SUPPRESS_NODISCARD msg.SerializeToString(&e1.PreSerializedData);
-
- auto serializer1 = MakeHolder<TAllocChunkSerializer>();
+
+ auto serializer1 = MakeHolder<TAllocChunkSerializer>();
e1.SerializeToArcadiaStream(serializer1.Get());
- auto buffers1 = serializer1->Release(e1.IsExtendedFormat());
- UNIT_ASSERT_VALUES_EQUAL(buffers1->GetSize(), e1.CalculateSerializedSize());
- TString ser1 = buffers1->GetString();
-
- TEvMessageWithPayload e2(msg);
- auto serializer2 = MakeHolder<TAllocChunkSerializer>();
+ auto buffers1 = serializer1->Release(e1.IsExtendedFormat());
+ UNIT_ASSERT_VALUES_EQUAL(buffers1->GetSize(), e1.CalculateSerializedSize());
+ TString ser1 = buffers1->GetString();
+
+ TEvMessageWithPayload e2(msg);
+ auto serializer2 = MakeHolder<TAllocChunkSerializer>();
e2.SerializeToArcadiaStream(serializer2.Get());
- auto buffers2 = serializer2->Release(e2.IsExtendedFormat());
- UNIT_ASSERT_VALUES_EQUAL(buffers2->GetSize(), e2.CalculateSerializedSize());
- TString ser2 = buffers2->GetString();
- UNIT_ASSERT_VALUES_EQUAL(ser1, ser2);
-
- // deserialize
- auto data = MakeIntrusive<TEventSerializedData>(ser1, false);
- THolder<TEvMessageWithPayloadPreSerialized> parsedEvent(static_cast<TEvMessageWithPayloadPreSerialized*>(TEvMessageWithPayloadPreSerialized::Load(data)));
- UNIT_ASSERT_VALUES_EQUAL(parsedEvent->PreSerializedData, ""); // this field is empty after deserialization
- auto& record = parsedEvent->GetRecord();
- UNIT_ASSERT_VALUES_EQUAL(record.GetMeta(), msg.GetMeta());
- UNIT_ASSERT_VALUES_EQUAL(record.PayloadIdSize(), msg.PayloadIdSize());
- UNIT_ASSERT_VALUES_EQUAL(record.PayloadIdSize(), 2);
- UNIT_ASSERT_VALUES_EQUAL(record.GetPayloadId(0), msg.GetPayloadId(0));
- UNIT_ASSERT_VALUES_EQUAL(record.GetPayloadId(1), msg.GetPayloadId(1));
- }
+ auto buffers2 = serializer2->Release(e2.IsExtendedFormat());
+ UNIT_ASSERT_VALUES_EQUAL(buffers2->GetSize(), e2.CalculateSerializedSize());
+ TString ser2 = buffers2->GetString();
+ UNIT_ASSERT_VALUES_EQUAL(ser1, ser2);
+
+ // deserialize
+ auto data = MakeIntrusive<TEventSerializedData>(ser1, false);
+ THolder<TEvMessageWithPayloadPreSerialized> parsedEvent(static_cast<TEvMessageWithPayloadPreSerialized*>(TEvMessageWithPayloadPreSerialized::Load(data)));
+ UNIT_ASSERT_VALUES_EQUAL(parsedEvent->PreSerializedData, ""); // this field is empty after deserialization
+ auto& record = parsedEvent->GetRecord();
+ UNIT_ASSERT_VALUES_EQUAL(record.GetMeta(), msg.GetMeta());
+ UNIT_ASSERT_VALUES_EQUAL(record.PayloadIdSize(), msg.PayloadIdSize());
+ UNIT_ASSERT_VALUES_EQUAL(record.PayloadIdSize(), 2);
+ UNIT_ASSERT_VALUES_EQUAL(record.GetPayloadId(0), msg.GetPayloadId(0));
+ UNIT_ASSERT_VALUES_EQUAL(record.GetPayloadId(1), msg.GetPayloadId(1));
+ }
}
diff --git a/library/cpp/grpc/client/grpc_client_low.h b/library/cpp/grpc/client/grpc_client_low.h
index ab0a0627be..c831b1fa60 100644
--- a/library/cpp/grpc/client/grpc_client_low.h
+++ b/library/cpp/grpc/client/grpc_client_low.h
@@ -173,7 +173,7 @@ bool inline IsGRpcStatusGood(const TGrpcStatus& status) {
return status.Ok();
}
-// Response callback type - this callback will be called when request is finished
+// Response callback type - this callback will be called when request is finished
// (or after getting each chunk in case of streaming mode)
template<typename TResponse>
using TResponseCallback = std::function<void (TGrpcStatus&&, TResponse&&)>;
@@ -236,8 +236,8 @@ public:
using TPtr = TIntrusivePtr<TSimpleRequestProcessor>;
using TAsyncRequest = TAsyncReaderPtr (TStub::*)(grpc::ClientContext*, const TRequest&, grpc::CompletionQueue*);
- explicit TSimpleRequestProcessor(TResponseCallback<TResponse>&& callback)
- : Callback_(std::move(callback))
+ explicit TSimpleRequestProcessor(TResponseCallback<TResponse>&& callback)
+ : Callback_(std::move(callback))
{ }
~TSimpleRequestProcessor() {
@@ -316,8 +316,8 @@ public:
using TPtr = TIntrusivePtr<TAdvancedRequestProcessor>;
using TAsyncRequest = TAsyncReaderPtr (TStub::*)(grpc::ClientContext*, const TRequest&, grpc::CompletionQueue*);
- explicit TAdvancedRequestProcessor(TAdvancedResponseCallback<TResponse>&& callback)
- : Callback_(std::move(callback))
+ explicit TAdvancedRequestProcessor(TAdvancedResponseCallback<TResponse>&& callback)
+ : Callback_(std::move(callback))
{ }
~TAdvancedRequestProcessor() {
@@ -1244,7 +1244,7 @@ public:
*/
template<typename TRequest, typename TResponse>
void DoRequest(const TRequest& request,
- TResponseCallback<TResponse> callback,
+ TResponseCallback<TResponse> callback,
typename TSimpleRequestProcessor<TStub, TRequest, TResponse>::TAsyncRequest asyncRequest,
const TCallMeta& metas = { },
IQueueClientContextProvider* provider = nullptr)
@@ -1259,7 +1259,7 @@ public:
*/
template<typename TRequest, typename TResponse>
void DoAdvancedRequest(const TRequest& request,
- TAdvancedResponseCallback<TResponse> callback,
+ TAdvancedResponseCallback<TResponse> callback,
typename TAdvancedRequestProcessor<TStub, TRequest, TResponse>::TAsyncRequest asyncRequest,
const TCallMeta& metas = { },
IQueueClientContextProvider* provider = nullptr)
diff --git a/library/cpp/http/server/http.cpp b/library/cpp/http/server/http.cpp
index 128583bdd7..7cbd4494e8 100644
--- a/library/cpp/http/server/http.cpp
+++ b/library/cpp/http/server/http.cpp
@@ -136,12 +136,12 @@ public:
};
static void* ListenSocketFunction(void* param) {
- try {
- ((TImpl*)param)->ListenSocket();
- } catch (...) {
-
- }
+ try {
+ ((TImpl*)param)->ListenSocket();
+ } catch (...) {
+ }
+
return nullptr;
}
@@ -798,11 +798,11 @@ bool TRequestReplier::Reply(void* threadSpecificResource) {
bool TryToBindAddresses(const THttpServerOptions& options, const std::function<void(TSocket)>* callbackOnBoundAddress) {
THttpServerOptions::TBindAddresses addrs;
- try {
- options.BindAddresses(addrs);
+ try {
+ options.BindAddresses(addrs);
} catch (const std::exception&) {
return false;
- }
+ }
for (const auto& na : addrs) {
for (TNetworkAddress::TIterator ai = na.Begin(); ai != na.End(); ++ai) {
diff --git a/library/cpp/json/writer/json_value.h b/library/cpp/json/writer/json_value.h
index 3f0f50bc4c..79d1a4cb3b 100644
--- a/library/cpp/json/writer/json_value.h
+++ b/library/cpp/json/writer/json_value.h
@@ -6,7 +6,7 @@
#include <util/generic/hash.h>
#include <util/generic/vector.h>
#include <util/generic/deque.h>
-#include <util/generic/utility.h>
+#include <util/generic/utility.h>
#include <util/generic/yexception.h>
namespace NJson {
@@ -205,7 +205,7 @@ namespace NJson {
TArray* Array;
TValueUnion() noexcept {
- Zero(*this);
+ Zero(*this);
}
~TValueUnion() noexcept {
}
diff --git a/library/cpp/lwtrace/mon/mon_lwtrace.cpp b/library/cpp/lwtrace/mon/mon_lwtrace.cpp
index a61ee9ce22..ecfa97e4c3 100644
--- a/library/cpp/lwtrace/mon/mon_lwtrace.cpp
+++ b/library/cpp/lwtrace/mon/mon_lwtrace.cpp
@@ -1798,7 +1798,7 @@ class TLogSources {
private:
TTraceCleaner& Cleaner;
TInstant Now;
- using TLogSourcePtr = std::unique_ptr<ILogSource>;
+ using TLogSourcePtr = std::unique_ptr<ILogSource>;
TMap<TString, TLogSourcePtr> LogSources;
public:
explicit TLogSources(TTraceCleaner& cleaner, TInstant now = TInstant::Now())
@@ -1809,20 +1809,20 @@ public:
void Push(const TString& sid, const TAtomicSharedPtr<NLWTrace::TLogPb>& log)
{
TLogSourcePtr ls(new TSnapshotLogSource(sid, log));
- LogSources.emplace(ls->GetId(), std::move(ls));
+ LogSources.emplace(ls->GetId(), std::move(ls));
}
void Push(const TString& id, const NLWTrace::TSession* trace)
{
TLogSourcePtr ls(new TTraceLogSource(id, trace, Cleaner));
- LogSources.emplace(ls->GetId(), std::move(ls));
+ LogSources.emplace(ls->GetId(), std::move(ls));
}
template <class TFunc>
void ForEach(TFunc& func)
{
for (auto& kv : LogSources) {
- func.Push(kv.second.get());
+ func.Push(kv.second.get());
}
}
@@ -1830,7 +1830,7 @@ public:
void ForEach(TFunc& func) const
{
for (const auto& kv : LogSources) {
- func.Push(kv.second.get());
+ func.Push(kv.second.get());
}
}
};
diff --git a/library/cpp/messagebus/message.h b/library/cpp/messagebus/message.h
index 005ca10c65..0fc1a1b707 100644
--- a/library/cpp/messagebus/message.h
+++ b/library/cpp/messagebus/message.h
@@ -120,11 +120,11 @@ namespace NBus {
struct TBusHeader {
friend class TBusMessage;
- TBusKey Id = 0; ///< unique message ID
- ui32 Size = 0; ///< total size of the message
- TBusInstant SendTime = 0; ///< time the message was sent
- ui16 FlagsInternal = 0; ///< TRACE is one of the flags
- ui16 Type = 0; ///< to be used by TBusProtocol
+ TBusKey Id = 0; ///< unique message ID
+ ui32 Size = 0; ///< total size of the message
+ TBusInstant SendTime = 0; ///< time the message was sent
+ ui16 FlagsInternal = 0; ///< TRACE is one of the flags
+ ui16 Type = 0; ///< to be used by TBusProtocol
int GetVersionInternal() {
return (FlagsInternal & MESSAGE_VERSION_INTERNAL) >> 4;
diff --git a/library/cpp/messagebus/message_ptr_and_header.h b/library/cpp/messagebus/message_ptr_and_header.h
index 9b4e2fd270..c4364f690f 100644
--- a/library/cpp/messagebus/message_ptr_and_header.h
+++ b/library/cpp/messagebus/message_ptr_and_header.h
@@ -18,8 +18,8 @@ namespace NBus {
{
}
- explicit TBusMessagePtrAndHeader(TBusMessage* messagePtr)
- : MessagePtr(messagePtr)
+ explicit TBusMessagePtrAndHeader(TBusMessage* messagePtr)
+ : MessagePtr(messagePtr)
, Header(*MessagePtr->GetHeader())
, LocalFlags(MessagePtr->LocalFlags)
{
diff --git a/library/cpp/messagebus/network.cpp b/library/cpp/messagebus/network.cpp
index 304bedae5a..1e2a89d605 100644
--- a/library/cpp/messagebus/network.cpp
+++ b/library/cpp/messagebus/network.cpp
@@ -14,15 +14,15 @@ namespace {
Y_VERIFY(af == AF_INET || af == AF_INET6, "wrong af");
SOCKET fd = ::socket(af, SOCK_STREAM, 0);
- if (fd == INVALID_SOCKET) {
- ythrow TSystemError() << "failed to create a socket";
- }
+ if (fd == INVALID_SOCKET) {
+ ythrow TSystemError() << "failed to create a socket";
+ }
int one = 1;
int r1 = SetSockOpt(fd, SOL_SOCKET, SO_REUSEADDR, one);
- if (r1 < 0) {
- ythrow TSystemError() << "failed to setsockopt SO_REUSEADDR";
- }
+ if (r1 < 0) {
+ ythrow TSystemError() << "failed to setsockopt SO_REUSEADDR";
+ }
#ifdef SO_REUSEPORT
if (reusePort) {
@@ -54,72 +54,72 @@ namespace {
int r2 = ::bind(fd, sa, len);
if (r2 < 0) {
- ythrow TSystemError() << "failed to bind on port " << port;
+ ythrow TSystemError() << "failed to bind on port " << port;
}
int rsn = ::getsockname(fd, addr->MutableAddr(), addr->LenPtr());
- if (rsn < 0) {
- ythrow TSystemError() << "failed to getsockname";
- }
+ if (rsn < 0) {
+ ythrow TSystemError() << "failed to getsockname";
+ }
int r3 = ::listen(fd, 50);
- if (r3 < 0) {
- ythrow TSystemError() << "listen failed";
- }
+ if (r3 < 0) {
+ ythrow TSystemError() << "listen failed";
+ }
TBindResult r;
r.Socket.Reset(new TSocketHolder(fd));
r.Addr = TNetAddr(addr.Release());
return r;
}
-
+
TMaybe<TBindResult> TryBindOnPortProto(int port, int af, bool reusePort) {
- try {
+ try {
return {BindOnPortProto(port, af, reusePort)};
- } catch (const TSystemError&) {
- return {};
- }
- }
-
- std::pair<unsigned, TVector<TBindResult>> AggregateBindResults(TBindResult&& r1, TBindResult&& r2) {
- Y_VERIFY(r1.Addr.GetPort() == r2.Addr.GetPort(), "internal");
- std::pair<unsigned, TVector<TBindResult>> r;
- r.second.reserve(2);
-
- r.first = r1.Addr.GetPort();
- r.second.emplace_back(std::move(r1));
- r.second.emplace_back(std::move(r2));
- return r;
- }
+ } catch (const TSystemError&) {
+ return {};
+ }
+ }
+
+ std::pair<unsigned, TVector<TBindResult>> AggregateBindResults(TBindResult&& r1, TBindResult&& r2) {
+ Y_VERIFY(r1.Addr.GetPort() == r2.Addr.GetPort(), "internal");
+ std::pair<unsigned, TVector<TBindResult>> r;
+ r.second.reserve(2);
+
+ r.first = r1.Addr.GetPort();
+ r.second.emplace_back(std::move(r1));
+ r.second.emplace_back(std::move(r2));
+ return r;
+ }
}
std::pair<unsigned, TVector<TBindResult>> NBus::BindOnPort(int port, bool reusePort) {
std::pair<unsigned, TVector<TBindResult>> r;
- r.second.reserve(2);
+ r.second.reserve(2);
if (port != 0) {
return AggregateBindResults(BindOnPortProto(port, AF_INET, reusePort),
BindOnPortProto(port, AF_INET6, reusePort));
- }
-
- // use nothrow versions in cycle
- for (int i = 0; i < 1000; ++i) {
+ }
+
+ // use nothrow versions in cycle
+ for (int i = 0; i < 1000; ++i) {
TMaybe<TBindResult> in4 = TryBindOnPortProto(0, AF_INET, reusePort);
- if (!in4) {
- continue;
+ if (!in4) {
+ continue;
}
-
+
TMaybe<TBindResult> in6 = TryBindOnPortProto(in4->Addr.GetPort(), AF_INET6, reusePort);
- if (!in6) {
- continue;
+ if (!in6) {
+ continue;
}
-
- return AggregateBindResults(std::move(*in4), std::move(*in6));
+
+ return AggregateBindResults(std::move(*in4), std::move(*in6));
}
-
+
TBindResult in4 = BindOnPortProto(0, AF_INET, reusePort);
TBindResult in6 = BindOnPortProto(in4.Addr.GetPort(), AF_INET6, reusePort);
- return AggregateBindResults(std::move(in4), std::move(in6));
+ return AggregateBindResults(std::move(in4), std::move(in6));
}
void NBus::NPrivate::SetSockOptTcpCork(SOCKET s, bool value) {
diff --git a/library/cpp/messagebus/network_ut.cpp b/library/cpp/messagebus/network_ut.cpp
index f1798419db..f919286e8d 100644
--- a/library/cpp/messagebus/network_ut.cpp
+++ b/library/cpp/messagebus/network_ut.cpp
@@ -56,10 +56,10 @@ Y_UNIT_TEST_SUITE(Network) {
UNIT_ASSERT_VALUES_EQUAL(r.at(0).Addr.GetPort(), r.at(1).Addr.GetPort());
}
-
+
Y_UNIT_TEST(BindOnBusyPort) {
auto r = BindOnPort(0, false);
-
+
UNIT_ASSERT_EXCEPTION_CONTAINS(BindOnPort(r.first, false), TSystemError, "failed to bind on port " + ToString(r.first));
- }
+ }
}
diff --git a/library/cpp/monlib/service/monservice.cpp b/library/cpp/monlib/service/monservice.cpp
index d1b9cda1d2..67b133365e 100644
--- a/library/cpp/monlib/service/monservice.cpp
+++ b/library/cpp/monlib/service/monservice.cpp
@@ -16,9 +16,9 @@ TMonService2::TMonService2(ui16 port, const TString& host, ui32 threads, const T
: TMonService2(HttpServerOptions(port, host, threads), title, std::move(auth))
{
}
-
+
TMonService2::TMonService2(const THttpServerOptions& options, const TString& title, THolder<IAuthProvider> auth)
- : NMonitoring::TMtHttpServer(options, std::bind(&TMonService2::ServeRequest, this, std::placeholders::_1, std::placeholders::_2))
+ : NMonitoring::TMtHttpServer(options, std::bind(&TMonService2::ServeRequest, this, std::placeholders::_1, std::placeholders::_2))
, Title(title)
, IndexMonPage(new TIndexMonPage("", Title))
, AuthProvider_{std::move(auth)}
diff --git a/library/python/ya.make b/library/python/ya.make
index 2e1eb6e0e1..83c3a7fc74 100644
--- a/library/python/ya.make
+++ b/library/python/ya.make
@@ -21,8 +21,8 @@ RECURSE(
bloom
boost_test
bstr
- build_info
- build_info/ut
+ build_info
+ build_info/ut
capabilities
celery_dashboard
certifi
diff --git a/util/generic/algorithm_ut.cpp b/util/generic/algorithm_ut.cpp
index 8d732fcc0c..d89116638d 100644
--- a/util/generic/algorithm_ut.cpp
+++ b/util/generic/algorithm_ut.cpp
@@ -842,9 +842,9 @@ Y_UNIT_TEST_SUITE(TAlgorithm) {
UNIT_ASSERT(Find(v, 1) == v.begin());
UNIT_ASSERT(Find(v, 100) == v.end() - 1);
}
-
- Y_UNIT_TEST(AccumulateWithBinOp) {
- std::vector<int> v = {1, 2, 777};
+
+ Y_UNIT_TEST(AccumulateWithBinOp) {
+ std::vector<int> v = {1, 2, 777};
UNIT_ASSERT_VALUES_EQUAL(TString("begin;1;2;777"), Accumulate(v, TString("begin"), [](auto&& a, auto& b) { return a + ";" + ToString(b); }));
- }
+ }
};
diff --git a/util/network/ip.h b/util/network/ip.h
index dc7c2d24a0..f172500899 100644
--- a/util/network/ip.h
+++ b/util/network/ip.h
@@ -61,7 +61,7 @@ struct TIpAddress: public sockaddr_in {
inline TIpAddress(const sockaddr_in& addr) noexcept
: sockaddr_in(addr)
- , tmp(0)
+ , tmp(0)
{
}
@@ -113,7 +113,7 @@ struct TIpAddress: public sockaddr_in {
return InetToHost(sin_port);
}
-private:
- // required for "operator socklen_t*()"
+private:
+ // required for "operator socklen_t*()"
mutable socklen_t tmp;
};
diff --git a/ydb/core/base/appdata.h b/ydb/core/base/appdata.h
index c666f7468c..f6266621dd 100644
--- a/ydb/core/base/appdata.h
+++ b/ydb/core/base/appdata.h
@@ -180,19 +180,19 @@ struct TAppData {
TProgramShouldContinue *kikimrShouldContinue);
};
-inline TAppData* AppData(TActorSystem* actorSystem) {
- Y_VERIFY_DEBUG(actorSystem);
- TAppData * const x = actorSystem->AppData<TAppData>();
+inline TAppData* AppData(TActorSystem* actorSystem) {
+ Y_VERIFY_DEBUG(actorSystem);
+ TAppData * const x = actorSystem->AppData<TAppData>();
Y_VERIFY_DEBUG(x && x->Magic == TAppData::MagicTag);
return x;
}
-inline TAppData* AppData() {
- return AppData(TlsActivationContext->ExecutorThread.ActorSystem);
-}
-
+inline TAppData* AppData() {
+ return AppData(TlsActivationContext->ExecutorThread.ActorSystem);
+}
+
inline TAppData* AppData(const TActorContext &ctx) {
- return AppData(ctx.ActorSystem());
+ return AppData(ctx.ActorSystem());
}
} // NKikimr
diff --git a/ydb/core/base/tablet.cpp b/ydb/core/base/tablet.cpp
index db3a3deb80..f2925b81d8 100644
--- a/ydb/core/base/tablet.cpp
+++ b/ydb/core/base/tablet.cpp
@@ -2,8 +2,8 @@
namespace NKikimr {
-TIntrusivePtr<TTabletStorageInfo> TabletStorageInfoFromProto(const NKikimrTabletBase::TTabletStorageInfo &proto) {
- auto info = MakeIntrusive<TTabletStorageInfo>();
+TIntrusivePtr<TTabletStorageInfo> TabletStorageInfoFromProto(const NKikimrTabletBase::TTabletStorageInfo &proto) {
+ auto info = MakeIntrusive<TTabletStorageInfo>();
info->TabletID = proto.GetTabletID();
diff --git a/ydb/core/base/tablet.h b/ydb/core/base/tablet.h
index 602e39c600..90a3322203 100644
--- a/ydb/core/base/tablet.h
+++ b/ydb/core/base/tablet.h
@@ -20,7 +20,7 @@
namespace NKikimr {
-TIntrusivePtr<TTabletStorageInfo> TabletStorageInfoFromProto(const NKikimrTabletBase::TTabletStorageInfo &proto);
+TIntrusivePtr<TTabletStorageInfo> TabletStorageInfoFromProto(const NKikimrTabletBase::TTabletStorageInfo &proto);
void TabletStorageInfoToProto(const TTabletStorageInfo &info, NKikimrTabletBase::TTabletStorageInfo *proto);
inline ui64 MakeGenStepPair(ui32 gen, ui32 step) {
diff --git a/ydb/core/base/tablet_resolver.h b/ydb/core/base/tablet_resolver.h
index 24744cef47..1843549889 100644
--- a/ydb/core/base/tablet_resolver.h
+++ b/ydb/core/base/tablet_resolver.h
@@ -181,7 +181,7 @@ struct TEvTabletResolver {
TEvForwardResult(NKikimrProto::EReplyStatus status, ui64 tabletId)
: Status(status)
, TabletID(tabletId)
- , CacheEpoch(0)
+ , CacheEpoch(0)
{}
TEvForwardResult(ui64 tabletId, const TActorId &tabletActor, const TActorId &tablet, ui64 cacheEpoch)
diff --git a/ydb/core/blobstorage/dsproxy/dsproxy_state.cpp b/ydb/core/blobstorage/dsproxy/dsproxy_state.cpp
index af2739699d..ef83cedb9a 100644
--- a/ydb/core/blobstorage/dsproxy/dsproxy_state.cpp
+++ b/ydb/core/blobstorage/dsproxy/dsproxy_state.cpp
@@ -30,8 +30,8 @@ namespace NKikimr {
EstablishingSessionStartTime = TActivationContext::Now();
ConfigureQueryTimeoutEv = nullptr;
ClearTimeoutCounters();
- EstablishingSessionsTimeoutEv = new TEvEstablishingSessionTimeout();
- Become(&TThis::StateEstablishingSessions, ProxyEstablishSessionsTimeout, EstablishingSessionsTimeoutEv);
+ EstablishingSessionsTimeoutEv = new TEvEstablishingSessionTimeout();
+ Become(&TThis::StateEstablishingSessions, ProxyEstablishSessionsTimeout, EstablishingSessionsTimeoutEv);
SwitchToWorkWhenGoodToGo();
}
@@ -56,8 +56,8 @@ namespace NKikimr {
ErrorDescription = "StateUnconfigured (DSPE9).";
EstablishingSessionsTimeoutEv = nullptr;
ClearTimeoutCounters();
- ConfigureQueryTimeoutEv = new TEvConfigureQueryTimeout();
- Become(&TThis::StateUnconfigured, ProxyConfigurationTimeout, ConfigureQueryTimeoutEv);
+ ConfigureQueryTimeoutEv = new TEvConfigureQueryTimeout();
+ Become(&TThis::StateUnconfigured, ProxyConfigurationTimeout, ConfigureQueryTimeoutEv);
}
void TBlobStorageGroupProxy::SetStateUnconfiguredTimeout() {
diff --git a/ydb/core/blobstorage/incrhuge/incrhuge_keeper_defrag.cpp b/ydb/core/blobstorage/incrhuge/incrhuge_keeper_defrag.cpp
index 0cb43beb2a..2ea2790931 100644
--- a/ydb/core/blobstorage/incrhuge/incrhuge_keeper_defrag.cpp
+++ b/ydb/core/blobstorage/incrhuge/incrhuge_keeper_defrag.cpp
@@ -232,7 +232,7 @@ namespace NKikimr {
const TBlobHeader& header = *result.Data.DataPtr<const TBlobHeader>(0);
if (!locator.DeleteInProgress && result.Data.IsReadable(0, totalSize)) {
- Y_VERIFY(Crc32c(&header.IndexRecord, totalSize - sizeof(ui32)) == header.Checksum);
+ Y_VERIFY(Crc32c(&header.IndexRecord, totalSize - sizeof(ui32)) == header.Checksum);
Y_VERIFY(header.IndexRecord == record);
Y_VERIFY(header.ChunkSerNum == ChunkInProgressSerNum);
TString data = header.ExtractInplacePayload();
diff --git a/ydb/core/blobstorage/incrhuge/incrhuge_keeper_recovery_scan.cpp b/ydb/core/blobstorage/incrhuge/incrhuge_keeper_recovery_scan.cpp
index eb60105861..786380d77f 100644
--- a/ydb/core/blobstorage/incrhuge/incrhuge_keeper_recovery_scan.cpp
+++ b/ydb/core/blobstorage/incrhuge/incrhuge_keeper_recovery_scan.cpp
@@ -102,7 +102,7 @@ namespace NKikimr {
}
// validate checksum
- const ui32 checksum = Crc32c(&header.ChunkSerNum, sizeof(TBlobIndexHeader) - sizeof(ui32) + dataSize);
+ const ui32 checksum = Crc32c(&header.ChunkSerNum, sizeof(TBlobIndexHeader) - sizeof(ui32) + dataSize);
if (checksum != header.Checksum) {
return false;
}
@@ -129,7 +129,7 @@ namespace NKikimr {
break;
}
- const ui32 checksum = Crc32c(&header.IndexRecord, sizeof(TBlobHeader) - sizeof(ui32) +
+ const ui32 checksum = Crc32c(&header.IndexRecord, sizeof(TBlobHeader) - sizeof(ui32) +
header.IndexRecord.PayloadSize);
if (checksum != header.Checksum) {
break;
diff --git a/ydb/core/blobstorage/incrhuge/incrhuge_keeper_write.cpp b/ydb/core/blobstorage/incrhuge/incrhuge_keeper_write.cpp
index ca6cedf5d8..3ec3f7c7c7 100644
--- a/ydb/core/blobstorage/incrhuge/incrhuge_keeper_write.cpp
+++ b/ydb/core/blobstorage/incrhuge/incrhuge_keeper_write.cpp
@@ -260,7 +260,7 @@ namespace NKikimr {
// fill in header; calculate checksum for header (excluding CRC) + data
header.ChunkSerNum = chunk.ChunkSerNum;
- header.Checksum = Crc32cExtend(Crc32c(&header.IndexRecord, sizeof(TBlobHeader) - sizeof(ui32)),
+ header.Checksum = Crc32cExtend(Crc32c(&header.IndexRecord, sizeof(TBlobHeader) - sizeof(ui32)),
item.Data.data(), item.Data.size());
static_assert(offsetof(TBlobHeader, Checksum) == 0 && sizeof(TBlobHeader::Checksum) == sizeof(ui32),
"incorrect displacement of TBlobHeader::Checksum");
@@ -490,7 +490,7 @@ namespace NKikimr {
memset(&indexHeader, 0, sizeof(indexHeader));
indexHeader.ChunkSerNum = chunk.ChunkSerNum;
indexHeader.NumItems = finIt->second.Index.size();
- indexHeader.Checksum = Crc32cExtend(Crc32c(&indexHeader.ChunkSerNum,
+ indexHeader.Checksum = Crc32cExtend(Crc32c(&indexHeader.ChunkSerNum,
sizeof(indexHeader) - sizeof(TBlobIndexHeader::Checksum)),
finIt->second.Index.data(), indexHeader.NumItems * sizeof(TBlobIndexRecord));
static_assert(offsetof(TBlobIndexHeader, Checksum) == 0 && sizeof(TBlobIndexHeader::Checksum) == sizeof(ui32),
diff --git a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp
index 47093a108d..9db991b905 100644
--- a/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp
+++ b/ydb/core/blobstorage/nodewarden/node_warden_impl.cpp
@@ -346,7 +346,7 @@ void TNodeWarden::Handle(TEvPrivate::TEvUpdateNodeDrives::TPtr&) {
return [this, drives = std::move(drives)] () {
if (drives != WorkingLocalDrives) {
SendToController(std::make_unique<TEvBlobStorage::TEvControllerUpdateNodeDrives>(LocalNodeId, drives));
- WorkingLocalDrives = std::move(drives);
+ WorkingLocalDrives = std::move(drives);
}
};
});
diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp
index d00fc0f220..cc5b510f31 100644
--- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp
+++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp
@@ -333,7 +333,7 @@ void TPDisk::Stop() {
JointLogWrites.clear();
JointCommits.clear();
for (const auto& req : FastOperationsQueue) {
- TRequestBase::AbortDelete(req.get(), ActorSystem);
+ TRequestBase::AbortDelete(req.get(), ActorSystem);
}
FastOperationsQueue.clear();
for (TRequestBase* req : PausedQueue) {
@@ -2023,7 +2023,7 @@ void TPDisk::ProcessFastOperationsQueue() {
for (auto& req : FastOperationsQueue) {
switch (req->GetType()) {
case ERequestType::RequestYardInit: {
- std::unique_ptr<TYardInit> init{static_cast<TYardInit*>(req.release())};
+ std::unique_ptr<TYardInit> init{static_cast<TYardInit*>(req.release())};
if (YardInitStart(*init)) {
PendingYardInits.emplace(std::move(init));
}
@@ -2756,7 +2756,7 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) {
}
}
} else {
- FastOperationsQueue.push_back(std::unique_ptr<TRequestBase>(request));
+ FastOperationsQueue.push_back(std::unique_ptr<TRequestBase>(request));
LOG_DEBUG(*ActorSystem, NKikimrServices::BS_PDISK, "PDiskId# %" PRIu32 " ReqId# %" PRIu64
" PushRequestToForseti Push to FastOperationsQueue.size# %" PRIu64,
(ui32)PDiskId, (ui64)request->ReqId.Id, (ui64)FastOperationsQueue.size());
diff --git a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.h b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.h
index a9b910cb0c..efc309faaa 100644
--- a/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.h
+++ b/ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.h
@@ -75,9 +75,9 @@ public:
TVector<TLogWrite*> JointCommits;
TVector<TChunkTrim*> JointChunkTrims;
- TVector<std::unique_ptr<TRequestBase>> FastOperationsQueue;
+ TVector<std::unique_ptr<TRequestBase>> FastOperationsQueue;
TDeque<TRequestBase*> PausedQueue;
- std::set<std::unique_ptr<TYardInit>> PendingYardInits;
+ std::set<std::unique_ptr<TYardInit>> PendingYardInits;
ui64 LastFlushId = 0;
bool IsQueuePaused = false;
bool IsQueueStep = false;
diff --git a/ydb/core/blobstorage/vdisk/hulldb/generic/blobstorage_hullwritesst.h b/ydb/core/blobstorage/vdisk/hulldb/generic/blobstorage_hullwritesst.h
index 930fce08e6..4a946da217 100644
--- a/ydb/core/blobstorage/vdisk/hulldb/generic/blobstorage_hullwritesst.h
+++ b/ydb/core/blobstorage/vdisk/hulldb/generic/blobstorage_hullwritesst.h
@@ -344,14 +344,14 @@ namespace NKikimr {
return location;
}
- TDiskPart Push(const TRope& buffer) {
+ TDiskPart Push(const TRope& buffer) {
Y_VERIFY_DEBUG(!Finished);
- TMaybe<TDiskPart> result = TBase::AppendAligned(buffer);
+ TMaybe<TDiskPart> result = TBase::AppendAligned(buffer);
if (!result) {
// there is no space to fit in current chunk -- restart base writer with new chunk
TBase::FinishChunk();
- result = TBase::AppendAligned(buffer);
+ result = TBase::AppendAligned(buffer);
Y_VERIFY(result);
}
diff --git a/ydb/core/blobstorage/vdisk/ingress/blobstorage_ingress.cpp b/ydb/core/blobstorage/vdisk/ingress/blobstorage_ingress.cpp
index 4e9f1f03c3..9e5e70242f 100644
--- a/ydb/core/blobstorage/vdisk/ingress/blobstorage_ingress.cpp
+++ b/ydb/core/blobstorage/vdisk/ingress/blobstorage_ingress.cpp
@@ -67,10 +67,10 @@ namespace NKikimr {
#define SETUP_VECTORS(data, gtype) \
ui32 totalParts = (gtype).TotalPartCount(); \
ui32 start = 2; \
- ui8* const dataPtr = (ui8*)(&(data));\
- TShiftedMainBitVec main(dataPtr, start, (start + totalParts)); \
+ ui8* const dataPtr = (ui8*)(&(data));\
+ TShiftedMainBitVec main(dataPtr, start, (start + totalParts)); \
start += totalParts; \
- TShiftedMainBitVec local(dataPtr, start, (start + totalParts)); \
+ TShiftedMainBitVec local(dataPtr, start, (start + totalParts)); \
start += totalParts; \
ui32 handoffNum = (gtype).Handoff(); \
Y_VERIFY_DEBUG(handoffNum <= MaxHandoffNodes); \
@@ -79,7 +79,7 @@ namespace NKikimr {
TShiftedHandoffBitVec handoff[MaxHandoffNodes]; \
{ \
for (unsigned i = 0; i < handoffNum; i++) { \
- handoff[i] = TShiftedHandoffBitVec(dataPtr, start, start + handoffVectorBits); \
+ handoff[i] = TShiftedHandoffBitVec(dataPtr, start, start + handoffVectorBits); \
start += handoffVectorBits; \
} \
}
diff --git a/ydb/core/blobstorage/vdisk/scrub/blob_recovery_request.cpp b/ydb/core/blobstorage/vdisk/scrub/blob_recovery_request.cpp
index ec2e24ff44..4f5a40b9bd 100644
--- a/ydb/core/blobstorage/vdisk/scrub/blob_recovery_request.cpp
+++ b/ydb/core/blobstorage/vdisk/scrub/blob_recovery_request.cpp
@@ -18,7 +18,7 @@ namespace NKikimr {
auto& rItems = context->Result->Items;
for (auto& item : msg->Items) {
rItems.emplace_back(std::move(item));
- AddBlobQuery(rItems.back().BlobId, rItems.back().Needed, context, &rItems.back());
+ AddBlobQuery(rItems.back().BlobId, rItems.back().Needed, context, &rItems.back());
++context->NumUnrespondedBlobs;
}
diff --git a/ydb/core/blobstorage/vdisk/synclog/blobstorage_synclogdsk.cpp b/ydb/core/blobstorage/vdisk/synclog/blobstorage_synclogdsk.cpp
index 1a2fb95e1c..b55201e8a7 100644
--- a/ydb/core/blobstorage/vdisk/synclog/blobstorage_synclogdsk.cpp
+++ b/ydb/core/blobstorage/vdisk/synclog/blobstorage_synclogdsk.cpp
@@ -356,7 +356,7 @@ namespace NKikimr {
TIndexedChunkPtr chunkPtr = ManyIdxChunks.front();
if (chunkPtr->GetLastLsn() <= confirmedCutLsn) {
ManyIdxChunks.pop_front();
- chunkPtr->SetUpNotifier(notifier);
+ chunkPtr->SetUpNotifier(notifier);
chunks.push_back(chunkPtr->GetChunkIdx());
nchunks++;
} else
@@ -378,7 +378,7 @@ namespace NKikimr {
TIndexedChunkPtr chunkPtr = ManyIdxChunks.front();
ManyIdxChunks.pop_front();
newLogStartLsn = chunkPtr->GetLastLsn() + 1;
- chunkPtr->SetUpNotifier(notifier);
+ chunkPtr->SetUpNotifier(notifier);
chunks.push_back(chunkPtr->GetChunkIdx());
}
diff --git a/ydb/core/client/server/grpc_server.h b/ydb/core/client/server/grpc_server.h
index 2f2ae1da6b..b6700ea139 100644
--- a/ydb/core/client/server/grpc_server.h
+++ b/ydb/core/client/server/grpc_server.h
@@ -90,7 +90,7 @@ private:
std::function<void()> InitCb_;
// In flight request management.
- NGrpc::TGlobalLimiter* Limiter_ = nullptr;
+ NGrpc::TGlobalLimiter* Limiter_ = nullptr;
};
diff --git a/ydb/core/client/server/msgbus_server.h b/ydb/core/client/server/msgbus_server.h
index 3d40fc9001..8d157e19c7 100644
--- a/ydb/core/client/server/msgbus_server.h
+++ b/ydb/core/client/server/msgbus_server.h
@@ -139,7 +139,7 @@ class TMessageBusServer : public IMessageBusServer, public NBus::IBusServerHandl
std::shared_ptr<IPersQueueGetReadSessionsInfoWorkerFactory> PQReadSessionsInfoWorkerFactory;
protected:
TProtocol Protocol;
- TActorSystem *ActorSystem = nullptr;
+ TActorSystem *ActorSystem = nullptr;
TIntrusivePtr<IMessageBusHttpServer> HttpServer;
public:
TMessageBusServer(
diff --git a/ydb/core/client/server/msgbus_server_cms.cpp b/ydb/core/client/server/msgbus_server_cms.cpp
index 53ada2a3fa..ed69b9e1ed 100644
--- a/ydb/core/client/server/msgbus_server_cms.cpp
+++ b/ydb/core/client/server/msgbus_server_cms.cpp
@@ -290,7 +290,7 @@ public:
private:
NKikimrClient::TCmsRequest Request;
NKikimrClient::TCmsResponse Response;
- ui32 StateStorageGroup = 0;
+ ui32 StateStorageGroup = 0;
TActorId CmsPipe;
};
diff --git a/ydb/core/client/server/msgbus_server_console.cpp b/ydb/core/client/server/msgbus_server_console.cpp
index 66bc0b02eb..e7885e270a 100644
--- a/ydb/core/client/server/msgbus_server_console.cpp
+++ b/ydb/core/client/server/msgbus_server_console.cpp
@@ -346,7 +346,7 @@ public:
private:
NKikimrClient::TConsoleRequest Request;
NKikimrClient::TConsoleResponse Response;
- ui32 StateStorageGroup = 0;
+ ui32 StateStorageGroup = 0;
TActorId ConsolePipe;
};
diff --git a/ydb/core/client/server/msgbus_tabletreq.h b/ydb/core/client/server/msgbus_tabletreq.h
index f173ae9097..41b481dc75 100644
--- a/ydb/core/client/server/msgbus_tabletreq.h
+++ b/ydb/core/client/server/msgbus_tabletreq.h
@@ -28,7 +28,7 @@ protected:
private:
TActorId PipeClient;
- ui64 TabletId = 0;
+ ui64 TabletId = 0;
void Handle(TEvTabletPipe::TEvClientConnected::TPtr &ev, const TActorContext &ctx) {
TEvTabletPipe::TEvClientConnected *msg = ev->Get();
diff --git a/ydb/core/cms/cluster_info.h b/ydb/core/cms/cluster_info.h
index af5fe24af8..3e650da171 100644
--- a/ydb/core/cms/cluster_info.h
+++ b/ydb/core/cms/cluster_info.h
@@ -92,7 +92,7 @@ struct TRequestInfo {
TString RequestId;
TString Owner;
- ui64 Order = 0;
+ ui64 Order = 0;
NKikimrCms::TPermissionRequest Request;
};
@@ -403,7 +403,7 @@ public:
, VDiskId(id)
, PDiskId(pdiskId)
, NodeId(nodeId)
- , SlotId(0)
+ , SlotId(0)
{
}
diff --git a/ydb/core/driver_lib/cli_base/cli_cmds_db.cpp b/ydb/core/driver_lib/cli_base/cli_cmds_db.cpp
index 450d4135c6..80d054101c 100644
--- a/ydb/core/driver_lib/cli_base/cli_cmds_db.cpp
+++ b/ydb/core/driver_lib/cli_base/cli_cmds_db.cpp
@@ -796,10 +796,10 @@ public:
TClientCommandSchemaAccess()
: TClientCommandTree("access", { "acl" }, "Access operations")
{
- AddCommand(std::make_unique<TClientCommandSchemaAccessAdd>());
- AddCommand(std::make_unique<TClientCommandSchemaAccessRemove>());
- //AddCommand(std::make_unique<TClientCommandSchemaAccessGrant>());
- //AddCommand(std::make_unique<TClientCommandSchemaAccessRevoke>());
+ AddCommand(std::make_unique<TClientCommandSchemaAccessAdd>());
+ AddCommand(std::make_unique<TClientCommandSchemaAccessRemove>());
+ //AddCommand(std::make_unique<TClientCommandSchemaAccessGrant>());
+ //AddCommand(std::make_unique<TClientCommandSchemaAccessRevoke>());
}
};
@@ -1014,8 +1014,8 @@ public:
TClientCommandSchemaTable()
: TClientCommandTree("table", {}, "Table operations")
{
- AddCommand(std::make_unique<TClientCommandSchemaTableOptions>());
- AddCommand(std::make_unique<TClientCommandSchemaTableCopy>());
+ AddCommand(std::make_unique<TClientCommandSchemaTableOptions>());
+ AddCommand(std::make_unique<TClientCommandSchemaTableCopy>());
}
};
@@ -1250,31 +1250,31 @@ public:
TClientCommandSchemaUserAttribute()
: TClientCommandTree("user-attribute", { "ua" }, "User attribute operations")
{
- AddCommand(std::make_unique<TClientCommandSchemaUserAttributeGet>());
- AddCommand(std::make_unique<TClientCommandSchemaUserAttributeSet>());
- AddCommand(std::make_unique<TClientCommandSchemaUserAttributeDel>());
+ AddCommand(std::make_unique<TClientCommandSchemaUserAttributeGet>());
+ AddCommand(std::make_unique<TClientCommandSchemaUserAttributeSet>());
+ AddCommand(std::make_unique<TClientCommandSchemaUserAttributeDel>());
}
};
TClientCommandSchemaLite::TClientCommandSchemaLite()
: TClientCommandTree("schema", {}, "Schema operations")
{
- AddCommand(std::make_unique<TClientCommandSchemaExec>());
- AddCommand(std::make_unique<TClientCommandSchemaDescribe>());
- AddCommand(std::make_unique<TClientCommandSchemaLs>());
- AddCommand(std::make_unique<TClientCommandSchemaMkdir>());
- AddCommand(std::make_unique<TClientCommandSchemaDrop>());
- AddCommand(std::make_unique<TClientCommandSchemaChown>());
- AddCommand(std::make_unique<TClientCommandSchemaAccess>());
- AddCommand(std::make_unique<TClientCommandSchemaTable>());
- AddCommand(std::make_unique<TClientCommandSchemaUserAttribute>());
+ AddCommand(std::make_unique<TClientCommandSchemaExec>());
+ AddCommand(std::make_unique<TClientCommandSchemaDescribe>());
+ AddCommand(std::make_unique<TClientCommandSchemaLs>());
+ AddCommand(std::make_unique<TClientCommandSchemaMkdir>());
+ AddCommand(std::make_unique<TClientCommandSchemaDrop>());
+ AddCommand(std::make_unique<TClientCommandSchemaChown>());
+ AddCommand(std::make_unique<TClientCommandSchemaAccess>());
+ AddCommand(std::make_unique<TClientCommandSchemaTable>());
+ AddCommand(std::make_unique<TClientCommandSchemaUserAttribute>());
}
class TClientCommandSchema : public TClientCommandSchemaLite {
public:
TClientCommandSchema()
{
- AddCommand(std::make_unique<TClientCommandSchemaInit>());
+ AddCommand(std::make_unique<TClientCommandSchemaInit>());
}
};
@@ -1451,9 +1451,9 @@ public:
TClientCommandDb::TClientCommandDb()
: TClientCommandTree("db", {}, "KiKiMR DB operations")
{
- AddCommand(std::make_unique<TClientCommandSchema>());
- AddCommand(std::make_unique<TClientCommandDbExec>());
- AddCommand(std::make_unique<TClientCommandS3Listing>());
+ AddCommand(std::make_unique<TClientCommandSchema>());
+ AddCommand(std::make_unique<TClientCommandDbExec>());
+ AddCommand(std::make_unique<TClientCommandS3Listing>());
}
}
diff --git a/ydb/core/driver_lib/cli_base/cli_cmds_discovery.cpp b/ydb/core/driver_lib/cli_base/cli_cmds_discovery.cpp
index 729ae432c3..25a46698af 100644
--- a/ydb/core/driver_lib/cli_base/cli_cmds_discovery.cpp
+++ b/ydb/core/driver_lib/cli_base/cli_cmds_discovery.cpp
@@ -54,7 +54,7 @@ struct TClientCommandDiscoveryListEndpoints
TClientCommandDiscovery::TClientCommandDiscovery()
: TClientCommandTree("discovery", {}, "Endpoint discovery")
{
- AddCommand(std::make_unique<TClientCommandDiscoveryListEndpoints>());
+ AddCommand(std::make_unique<TClientCommandDiscoveryListEndpoints>());
}
// New YDB behavior:
diff --git a/ydb/core/driver_lib/cli_base/cli_cmds_root.cpp b/ydb/core/driver_lib/cli_base/cli_cmds_root.cpp
index 197eccfcfd..dc72793b51 100644
--- a/ydb/core/driver_lib/cli_base/cli_cmds_root.cpp
+++ b/ydb/core/driver_lib/cli_base/cli_cmds_root.cpp
@@ -78,9 +78,9 @@ public:
TClientCommandRootLite()
: TClientCommandRootKikimrBase("ydb")
{
- AddCommand(std::make_unique<TClientCommandSchemaLite>());
- AddCommand(std::make_unique<TClientCommandWhoAmI>());
- AddCommand(std::make_unique<TClientCommandDiscoveryLite>());
+ AddCommand(std::make_unique<TClientCommandSchemaLite>());
+ AddCommand(std::make_unique<TClientCommandWhoAmI>());
+ AddCommand(std::make_unique<TClientCommandDiscoveryLite>());
}
void Config(TConfig& config) override {
diff --git a/ydb/core/driver_lib/cli_base/cli_grpc.h b/ydb/core/driver_lib/cli_base/cli_grpc.h
index 61d09c9f70..9feda09790 100644
--- a/ydb/core/driver_lib/cli_base/cli_grpc.h
+++ b/ydb/core/driver_lib/cli_base/cli_grpc.h
@@ -45,7 +45,7 @@ int DoGRpcRequest(const NGRpcProxy::TGRpcClientConfig &clientConfig,
{
NGrpc::TGRpcClientLow clientLow;
auto connection = clientLow.CreateGRpcServiceConnection<TService>(clientConfig);
- connection->DoRequest(request, responseCb, function, meta);
+ connection->DoRequest(request, responseCb, function, meta);
}
NGrpc::TResponseCallback<Ydb::Operations::GetOperationResponse> operationCb =
@@ -64,7 +64,7 @@ int DoGRpcRequest(const NGRpcProxy::TGRpcClientConfig &clientConfig,
auto connection = clientLow.CreateGRpcServiceConnection<Ydb::Operation::V1::OperationService>(clientConfig);
Ydb::Operations::GetOperationRequest request;
request.set_id(response.id());
- connection->DoRequest(request, operationCb, &Ydb::Operation::V1::OperationService::Stub::AsyncGetOperation, meta);
+ connection->DoRequest(request, operationCb, &Ydb::Operation::V1::OperationService::Stub::AsyncGetOperation, meta);
}
return res;
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_admin.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_admin.cpp
index 49935a5e98..f02bd2b762 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_admin.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_admin.cpp
@@ -7,12 +7,12 @@ namespace NDriverClient {
TClientCommandAdmin::TClientCommandAdmin()
: TClientCommandTree("admin", {}, "KiKiMR management and administration")
{
- AddCommand(std::make_unique<TClientCommandTablet>());
- AddCommand(std::make_unique<TClientCommandNode>());
- AddCommand(std::make_unique<TClientCommandDebug>());
- AddCommand(std::make_unique<TClientCommandBlobStorage>());
- AddCommand(std::make_unique<TClientCommandTenant>());
- AddCommand(std::make_unique<TClientCommandConsole>());
+ AddCommand(std::make_unique<TClientCommandTablet>());
+ AddCommand(std::make_unique<TClientCommandNode>());
+ AddCommand(std::make_unique<TClientCommandDebug>());
+ AddCommand(std::make_unique<TClientCommandBlobStorage>());
+ AddCommand(std::make_unique<TClientCommandTenant>());
+ AddCommand(std::make_unique<TClientCommandConsole>());
}
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_bs.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_bs.cpp
index ef731708bf..3e9c933b16 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_bs.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_bs.cpp
@@ -4,11 +4,11 @@
namespace NKikimr {
namespace NDriverClient {
-std::unique_ptr<TClientCommand> CreateClientCommandDisk();
-std::unique_ptr<TClientCommand> CreateClientCommandGroup();
-std::unique_ptr<TClientCommand> CreateClientCommandGenConfig();
-std::unique_ptr<TClientCommand> CreateClientCommandGet();
-std::unique_ptr<TClientCommand> CreateClientCommandBsConfig();
+std::unique_ptr<TClientCommand> CreateClientCommandDisk();
+std::unique_ptr<TClientCommand> CreateClientCommandGroup();
+std::unique_ptr<TClientCommand> CreateClientCommandGenConfig();
+std::unique_ptr<TClientCommand> CreateClientCommandGet();
+std::unique_ptr<TClientCommand> CreateClientCommandBsConfig();
TClientCommandBlobStorage::TClientCommandBlobStorage()
: TClientCommandTree("blobstorage", { "bs" }, "Blob Storage management")
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp
index 8d8e54af65..def9e6ec01 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_cms.cpp
@@ -500,9 +500,9 @@ public:
NKikimrCms::TAction::EType type,
TClientCommandWithAction::EFreeField freeArgField,
bool hasDuration)
- : TClientCommandTree(name, {}, description)
+ : TClientCommandTree(name, {}, description)
{
- AddCommand(std::make_unique<TClientCommandMakeRequest>(requestDescription, type, freeArgField, hasDuration));
+ AddCommand(std::make_unique<TClientCommandMakeRequest>(requestDescription, type, freeArgField, hasDuration));
}
};
@@ -511,11 +511,11 @@ public:
TClientCommandAddRequest()
: TClientCommandTree("add", {}, "")
{
- AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to add host",
+ AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to add host",
NKikimrCms::TAction::ADD_HOST,
TClientCommandWithAction::FF_HOST,
false));
- AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to add device",
+ AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to add device",
NKikimrCms::TAction::ADD_DEVICES,
TClientCommandWithAction::FF_DEVICE,
false));
@@ -527,15 +527,15 @@ public:
TClientCommandRestartRequest()
: TClientCommandTree("restart", {}, "")
{
- AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to restart service",
+ AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to restart service",
NKikimrCms::TAction::RESTART_SERVICES,
TClientCommandWithAction::FF_SERVICE,
true));
- AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to restart host",
+ AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to restart host",
NKikimrCms::TAction::SHUTDOWN_HOST,
TClientCommandWithAction::FF_HOST,
true));
- AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to restart tenant's hosts",
+ AddCommand(std::make_unique<TClientCommandMakeRequest>("Ask for permission to restart tenant's hosts",
NKikimrCms::TAction::SHUTDOWN_HOST,
TClientCommandWithAction::FF_TENANT,
true));
@@ -548,32 +548,32 @@ public:
TClientCommandRequest()
: TClientCommandTree("request", {}, "Make and manage permission requests")
{
- //AddCommand(std::make_unique<TClientCommandSingleRequest>("start", "", "Ask for permission to start service",
+ //AddCommand(std::make_unique<TClientCommandSingleRequest>("start", "", "Ask for permission to start service",
// NKikimrCms::TAction::START_SERVICES,
// TClientCommandWithAction::FF_SERVICE,
// false));
- //AddCommand(std::make_unique<TClientCommandSingleRequest>("stop", "", "Ask for permission to stop service",
+ //AddCommand(std::make_unique<TClientCommandSingleRequest>("stop", "", "Ask for permission to stop service",
// NKikimrCms::TAction::STOP_SERVICES,
// TClientCommandWithAction::FF_SERVICE,
// false));
- //AddCommand(std::make_unique<TClientCommandSingleRequest>("decommission", "", "Ask for permission to decommission host",
+ //AddCommand(std::make_unique<TClientCommandSingleRequest>("decommission", "", "Ask for permission to decommission host",
// NKikimrCms::TAction::DECOMMISSION_HOST,
// TClientCommandWithAction::FF_HOST,
// false));
- AddCommand(std::make_unique<TClientCommandSingleRequest>("replace", "", "Ask for permission to replace device",
+ AddCommand(std::make_unique<TClientCommandSingleRequest>("replace", "", "Ask for permission to replace device",
NKikimrCms::TAction::REPLACE_DEVICES,
TClientCommandWithAction::FF_DEVICE,
true));
- //AddCommand(std::make_unique<TClientCommandSingleRequest>("remove", "", "Ask for permission to remove device",
+ //AddCommand(std::make_unique<TClientCommandSingleRequest>("remove", "", "Ask for permission to remove device",
// NKikimrCms::TAction::REMOVE_DEVICES,
// TClientCommandWithAction::FF_DEVICE,
// false));
- //AddCommand(std::make_unique<TClientCommandAddRequest>());
- AddCommand(std::make_unique<TClientCommandRestartRequest>());
- AddCommand(std::make_unique<TClientCommandGetRequest>());
- AddCommand(std::make_unique<TClientCommandListRequest>());
- AddCommand(std::make_unique<TClientCommandRejectRequest>());
- AddCommand(std::make_unique<TClientCommandCheckRequest>());
+ //AddCommand(std::make_unique<TClientCommandAddRequest>());
+ AddCommand(std::make_unique<TClientCommandRestartRequest>());
+ AddCommand(std::make_unique<TClientCommandGetRequest>());
+ AddCommand(std::make_unique<TClientCommandListRequest>());
+ AddCommand(std::make_unique<TClientCommandRejectRequest>());
+ AddCommand(std::make_unique<TClientCommandCheckRequest>());
}
};
@@ -630,9 +630,9 @@ public:
NKikimrCms::TAction::EType type,
TClientCommandWithAction::EFreeField freeArgField,
bool hasDuration)
- : TClientCommandTree(name, {}, description)
+ : TClientCommandTree(name, {}, description)
{
- AddCommand(std::make_unique<TClientCommandSendNotification>(requestDescription, type, freeArgField, hasDuration));
+ AddCommand(std::make_unique<TClientCommandSendNotification>(requestDescription, type, freeArgField, hasDuration));
}
};
@@ -641,11 +641,11 @@ public:
TClientCommandNotifyAdd()
: TClientCommandTree("add", {}, "")
{
- AddCommand(std::make_unique<TClientCommandSendNotification>("Notify about new host",
+ AddCommand(std::make_unique<TClientCommandSendNotification>("Notify about new host",
NKikimrCms::TAction::ADD_HOST,
TClientCommandWithAction::FF_HOST,
false));
- AddCommand(std::make_unique<TClientCommandSendNotification>("Notify about new device",
+ AddCommand(std::make_unique<TClientCommandSendNotification>("Notify about new device",
NKikimrCms::TAction::ADD_DEVICES,
TClientCommandWithAction::FF_DEVICE,
false));
@@ -657,11 +657,11 @@ public:
TClientCommandNotifyRestart()
: TClientCommandTree("restart", {}, "")
{
- AddCommand(std::make_unique<TClientCommandSendNotification>("Notify about service restart",
+ AddCommand(std::make_unique<TClientCommandSendNotification>("Notify about service restart",
NKikimrCms::TAction::RESTART_SERVICES,
TClientCommandWithAction::FF_SERVICE,
true));
- AddCommand(std::make_unique<TClientCommandSendNotification>("Notify about host restart",
+ AddCommand(std::make_unique<TClientCommandSendNotification>("Notify about host restart",
NKikimrCms::TAction::SHUTDOWN_HOST,
TClientCommandWithAction::FF_HOST,
true));
@@ -755,31 +755,31 @@ public:
TClientCommandNotify()
: TClientCommandTree("notify", {}, "Send and manage notifications")
{
- //AddCommand(std::make_unique<TClientCommandSingleNotify>("start", "", "Notify about service start",
+ //AddCommand(std::make_unique<TClientCommandSingleNotify>("start", "", "Notify about service start",
// NKikimrCms::TAction::START_SERVICES,
// TClientCommandWithAction::FF_SERVICE,
// false));
- //AddCommand(std::make_unique<TClientCommandSingleNotify>("stop", "", "Notify about service stop",
+ //AddCommand(std::make_unique<TClientCommandSingleNotify>("stop", "", "Notify about service stop",
// NKikimrCms::TAction::STOP_SERVICES,
// TClientCommandWithAction::FF_SERVICE,
// false));
- //AddCommand(std::make_unique<TClientCommandSingleNotify>("decommission", "", "Notify about host decomission",
+ //AddCommand(std::make_unique<TClientCommandSingleNotify>("decommission", "", "Notify about host decomission",
// NKikimrCms::TAction::DECOMMISSION_HOST,
// TClientCommandWithAction::FF_HOST,
// false));
- AddCommand(std::make_unique<TClientCommandSingleNotify>("replace", "", "Notify about device replacement",
+ AddCommand(std::make_unique<TClientCommandSingleNotify>("replace", "", "Notify about device replacement",
NKikimrCms::TAction::REPLACE_DEVICES,
TClientCommandWithAction::FF_DEVICE,
true));
- //AddCommand(std::make_unique<TClientCommandSingleNotify>("remove", "", "Notify about device removal",
+ //AddCommand(std::make_unique<TClientCommandSingleNotify>("remove", "", "Notify about device removal",
// NKikimrCms::TAction::REMOVE_DEVICES,
// TClientCommandWithAction::FF_DEVICE,
// false));
- //AddCommand(std::make_unique<TClientCommandNotifyAdd>());
- AddCommand(std::make_unique<TClientCommandNotifyRestart>());
- AddCommand(std::make_unique<TClientCommandGetNotification>());
- AddCommand(std::make_unique<TClientCommandListNotification>());
- AddCommand(std::make_unique<TClientCommandRejectNotification>());
+ //AddCommand(std::make_unique<TClientCommandNotifyAdd>());
+ AddCommand(std::make_unique<TClientCommandNotifyRestart>());
+ AddCommand(std::make_unique<TClientCommandGetNotification>());
+ AddCommand(std::make_unique<TClientCommandListNotification>());
+ AddCommand(std::make_unique<TClientCommandRejectNotification>());
}
};
@@ -912,11 +912,11 @@ public:
TClientCommandPermission()
: TClientCommandTree("permission", {}, "Manage issued permissions")
{
- AddCommand(std::make_unique<TClientCommandGetPermission>());
- AddCommand(std::make_unique<TClientCommandListPermission>());
- AddCommand(std::make_unique<TClientCommandDonePermission>());
- //AddCommand(std::make_unique<TClientCommandExtendPermission>());
- AddCommand(std::make_unique<TClientCommandRejectPermission>());
+ AddCommand(std::make_unique<TClientCommandGetPermission>());
+ AddCommand(std::make_unique<TClientCommandListPermission>());
+ AddCommand(std::make_unique<TClientCommandDonePermission>());
+ //AddCommand(std::make_unique<TClientCommandExtendPermission>());
+ AddCommand(std::make_unique<TClientCommandRejectPermission>());
}
};
@@ -965,8 +965,8 @@ public:
TClientCommandManageConfig()
: TClientCommandTree("config", {}, "Manage CMS config")
{
- AddCommand(std::make_unique<TClientCommandGetConfig>());
- AddCommand(std::make_unique<TClientCommandSetConfig>());
+ AddCommand(std::make_unique<TClientCommandGetConfig>());
+ AddCommand(std::make_unique<TClientCommandSetConfig>());
}
};
@@ -1074,8 +1074,8 @@ public:
TClientCommandMarker()
: TClientCommandTree("marker", {}, "Manage markers")
{
- AddCommand(std::make_unique<TClientCommandSetMarker>());
- AddCommand(std::make_unique<TClientCommandResetMarker>());
+ AddCommand(std::make_unique<TClientCommandSetMarker>());
+ AddCommand(std::make_unique<TClientCommandResetMarker>());
}
};
@@ -1158,20 +1158,20 @@ public:
TClientCommandLog()
: TClientCommandTree("log", {}, "Inspect log records")
{
- AddCommand(std::make_unique<TClientCommandLogTail>());
+ AddCommand(std::make_unique<TClientCommandLogTail>());
}
};
TClientCommandCms::TClientCommandCms()
: TClientCommandTree("cms", {}, "CMS requests")
{
- AddCommand(std::make_unique<TClientCommandState>());
- AddCommand(std::make_unique<TClientCommandRequest>());
- AddCommand(std::make_unique<TClientCommandNotify>());
- AddCommand(std::make_unique<TClientCommandPermission>());
- AddCommand(std::make_unique<TClientCommandManageConfig>());
- AddCommand(std::make_unique<TClientCommandMarker>());
- AddCommand(std::make_unique<TClientCommandLog>());
+ AddCommand(std::make_unique<TClientCommandState>());
+ AddCommand(std::make_unique<TClientCommandRequest>());
+ AddCommand(std::make_unique<TClientCommandNotify>());
+ AddCommand(std::make_unique<TClientCommandPermission>());
+ AddCommand(std::make_unique<TClientCommandManageConfig>());
+ AddCommand(std::make_unique<TClientCommandMarker>());
+ AddCommand(std::make_unique<TClientCommandLog>());
}
} // namespace NDriverClient
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_config.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_config.cpp
index aae54255e9..6e93c8aac9 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_config.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_config.cpp
@@ -242,7 +242,7 @@ public:
TPropose()
: TClientCommandTree("propose", {}, "Configuration proposition for migration and initial configuring")
{
- AddCommand(std::make_unique<TProposeStoragePools>());
+ AddCommand(std::make_unique<TProposeStoragePools>());
}
};
@@ -251,14 +251,14 @@ public:
TClientCommandBsConfig()
: TClientCommandTree("config", {}, "Configuration management")
{
- AddCommand(std::make_unique<TPropose>());
- AddCommand(std::make_unique<TInvoke>());
+ AddCommand(std::make_unique<TPropose>());
+ AddCommand(std::make_unique<TInvoke>());
AddCommand(std::make_unique<TInit>());
}
};
-std::unique_ptr<TClientCommand> CreateClientCommandBsConfig() {
- return std::make_unique<TClientCommandBsConfig>();
+std::unique_ptr<TClientCommand> CreateClientCommandBsConfig() {
+ return std::make_unique<TClientCommandBsConfig>();
}
} // NDriverClient
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_console.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_console.cpp
index 0497d4ea8f..bf90f0bfbe 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_console.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_console.cpp
@@ -316,8 +316,8 @@ public:
TClientCommandConsoleConfigs()
: TClientCommandTree("configs", {}, "")
{
- AddCommand(std::make_unique<TClientCommandConsoleConfigsLoad>());
- AddCommand(std::make_unique<TClientCommandConsoleConfigsUpdate>());
+ AddCommand(std::make_unique<TClientCommandConsoleConfigsLoad>());
+ AddCommand(std::make_unique<TClientCommandConsoleConfigsUpdate>());
}
};
@@ -417,8 +417,8 @@ public:
TClientCommandConsoleConfig()
: TClientCommandTree("config", {}, "")
{
- AddCommand(std::make_unique<TClientCommandConsoleConfigGet>());
- AddCommand(std::make_unique<TClientCommandConsoleConfigSet>());
+ AddCommand(std::make_unique<TClientCommandConsoleConfigGet>());
+ AddCommand(std::make_unique<TClientCommandConsoleConfigSet>());
}
};
@@ -522,19 +522,19 @@ public:
TClientCommandConsoleValidator()
: TClientCommandTree("validator", {}, "")
{
- AddCommand(std::make_unique<TClientCommandConsoleValidatorDisable>());
- AddCommand(std::make_unique<TClientCommandConsoleValidatorEnable>());
- AddCommand(std::make_unique<TClientCommandConsoleValidatorList>());
+ AddCommand(std::make_unique<TClientCommandConsoleValidatorDisable>());
+ AddCommand(std::make_unique<TClientCommandConsoleValidatorEnable>());
+ AddCommand(std::make_unique<TClientCommandConsoleValidatorList>());
}
};
TClientCommandConsole::TClientCommandConsole()
: TClientCommandTree("console", {}, "Console commands")
{
- AddCommand(std::make_unique<TClientCommandConsoleConfig>());
- AddCommand(std::make_unique<TClientCommandConsoleConfigs>());
- AddCommand(std::make_unique<TClientCommandConsoleExecute>());
- AddCommand(std::make_unique<TClientCommandConsoleValidator>());
+ AddCommand(std::make_unique<TClientCommandConsoleConfig>());
+ AddCommand(std::make_unique<TClientCommandConsoleConfigs>());
+ AddCommand(std::make_unique<TClientCommandConsoleExecute>());
+ AddCommand(std::make_unique<TClientCommandConsoleValidator>());
}
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_debug.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_debug.cpp
index 9cd9e582fa..d81fa484ab 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_debug.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_debug.cpp
@@ -281,18 +281,18 @@ public:
TInterconnect()
: TClientCommandTree("interconnect", {"ic"}, "Interconnect debugging facilities")
{
- AddCommand(std::make_unique<TInterconnectLoad>());
- AddCommand(std::make_unique<TInterconnectClosePeerSocket>());
- AddCommand(std::make_unique<TInterconnectCloseInputSession>());
- AddCommand(std::make_unique<TInterconnectPoisonSession>());
- AddCommand(std::make_unique<TInterconnectSlowpoke>());
+ AddCommand(std::make_unique<TInterconnectLoad>());
+ AddCommand(std::make_unique<TInterconnectClosePeerSocket>());
+ AddCommand(std::make_unique<TInterconnectCloseInputSession>());
+ AddCommand(std::make_unique<TInterconnectPoisonSession>());
+ AddCommand(std::make_unique<TInterconnectSlowpoke>());
}
};
TClientCommandDebug::TClientCommandDebug()
: TClientCommandTree("debug")
{
- AddCommand(std::make_unique<TInterconnect>());
+ AddCommand(std::make_unique<TInterconnect>());
}
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_disk.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_disk.cpp
index a9be370d37..9d221f69fd 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_disk.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_disk.cpp
@@ -209,14 +209,14 @@ public:
TClientCommandDisk()
: TClientCommandTree("disk", {}, "Disk management")
{
- AddCommand(std::make_unique<TClientCommandDiskInfo>());
- AddCommand(std::make_unique<TClientCommandDiskFormat>());
- AddCommand(std::make_unique<TClientCommandDiskObliterate>());
+ AddCommand(std::make_unique<TClientCommandDiskInfo>());
+ AddCommand(std::make_unique<TClientCommandDiskFormat>());
+ AddCommand(std::make_unique<TClientCommandDiskObliterate>());
}
};
-std::unique_ptr<TClientCommand> CreateClientCommandDisk() {
- return std::make_unique<TClientCommandDisk>();
+std::unique_ptr<TClientCommand> CreateClientCommandDisk() {
+ return std::make_unique<TClientCommandDisk>();
}
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_genconfig.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_genconfig.cpp
index af2801de36..0e5cce574b 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_genconfig.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_genconfig.cpp
@@ -346,12 +346,12 @@ public:
TClientCommandGenConfig()
: TClientCommandTree("genconfig", {}, "Config generation")
{
- AddCommand(std::make_unique<TClientCommandGenConfigStatic>());
+ AddCommand(std::make_unique<TClientCommandGenConfigStatic>());
}
};
-std::unique_ptr<TClientCommand> CreateClientCommandGenConfig() {
- return std::make_unique<TClientCommandGenConfig>();
+std::unique_ptr<TClientCommand> CreateClientCommandGenConfig() {
+ return std::make_unique<TClientCommandGenConfig>();
}
} // NDriverClient
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_get.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_get.cpp
index f659360087..fe1d8fc0ec 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_get.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_get.cpp
@@ -82,12 +82,12 @@ public:
TClientCommandGet()
: TClientCommandTree("get", {}, "Various storage low-level queries")
{
- AddCommand(std::make_unique<TClientCommandGetBlob>());
+ AddCommand(std::make_unique<TClientCommandGetBlob>());
}
};
-std::unique_ptr<TClientCommand> CreateClientCommandGet() {
- return std::make_unique<TClientCommandGet>();
+std::unique_ptr<TClientCommand> CreateClientCommandGet() {
+ return std::make_unique<TClientCommandGet>();
}
} // NDriverClient
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_group.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_group.cpp
index 0b4804c1c1..0c20ce1c94 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_group.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_group.cpp
@@ -70,7 +70,7 @@ public:
TClientCommandGroupReconfigure()
: TClientCommandTree("reconfigure", {}, "Change the configuration of a group")
{
- AddCommand(std::make_unique<TClientCommandGroupReconfigureWipe>());
+ AddCommand(std::make_unique<TClientCommandGroupReconfigureWipe>());
}
};
@@ -79,12 +79,12 @@ public:
TClientCommandGroup()
: TClientCommandTree("group", {}, "Group management")
{
- AddCommand(std::make_unique<TClientCommandGroupReconfigure>());
+ AddCommand(std::make_unique<TClientCommandGroupReconfigure>());
}
};
-std::unique_ptr<TClientCommand> CreateClientCommandGroup() {
- return std::make_unique<TClientCommandGroup>();
+std::unique_ptr<TClientCommand> CreateClientCommandGroup() {
+ return std::make_unique<TClientCommandGroup>();
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_node.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_node.cpp
index 11e89d1960..6f60b056d9 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_node.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_node.cpp
@@ -37,8 +37,8 @@ public:
TClientCommandNodeN()
: TClientCommandTree("*", {}, "<node id or hostname>")
{
- AddCommand(std::make_unique<TClientCommandDrain>());
- AddCommand(std::make_unique<TClientCommandFill>());
+ AddCommand(std::make_unique<TClientCommandDrain>());
+ AddCommand(std::make_unique<TClientCommandFill>());
}
virtual void Config(TConfig& config) override {
@@ -94,7 +94,7 @@ public:
TClientCommandNode::TClientCommandNode()
: TClientCommandTree("node", {}, "Nodes infrastructure administration")
{
- AddCommand(std::make_unique<TClientCommandNodeN>());
+ AddCommand(std::make_unique<TClientCommandNodeN>());
}
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_root.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_root.cpp
index ec049fab11..47340310d2 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_root.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_root.cpp
@@ -18,11 +18,11 @@ public:
TClientCommandRoot(std::shared_ptr<TModuleFactories> factories)
: TClientCommandRootKikimrBase("kikimr")
{
- AddCommand(std::make_unique<TClientCommandAdmin>());
- AddCommand(std::make_unique<TClientCommandDb>());
- AddCommand(std::make_unique<TClientCommandCms>());
- AddCommand(std::make_unique<TClientCommandWhoAmI>());
- AddCommand(std::make_unique<TClientCommandDiscovery>());
+ AddCommand(std::make_unique<TClientCommandAdmin>());
+ AddCommand(std::make_unique<TClientCommandDb>());
+ AddCommand(std::make_unique<TClientCommandCms>());
+ AddCommand(std::make_unique<TClientCommandWhoAmI>());
+ AddCommand(std::make_unique<TClientCommandDiscovery>());
AddClientCommandServer(*this, std::move(factories));
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
index 6766dd3171..88ed304256 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
@@ -1153,8 +1153,8 @@ private:
};
void AddClientCommandServer(TClientCommandTree& parent, std::shared_ptr<TModuleFactories> factories) {
- parent.AddCommand(std::make_unique<TClientCommandServer>(factories));
- parent.AddCommand(std::make_unique<TClientCommandServerConfig>());
+ parent.AddCommand(std::make_unique<TClientCommandServer>(factories));
+ parent.AddCommand(std::make_unique<TClientCommandServerConfig>());
}
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_tablet.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_tablet.cpp
index 361e757ca1..eb40faa374 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_tablet.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_tablet.cpp
@@ -77,7 +77,7 @@ public:
TClientCommandKeyValue()
: TClientCommandTree("keyvalue", { "kv" })
{
- AddCommand(std::make_unique<TClientCommandKeyValueRequest>());
+ AddCommand(std::make_unique<TClientCommandKeyValueRequest>());
}
};
@@ -258,10 +258,10 @@ public:
TClientCommandTabletN()
: TClientCommandTree("#", {}, "<tablet id>")
{
- AddCommand(std::make_unique<TClientCommandKeyValue>());
- AddCommand(std::make_unique<TClientCommandTabletExec>());
- AddCommand(std::make_unique<TClientCommandTabletKill>());
- AddCommand(std::make_unique<TClientCommandTabletSchemeTx>());
+ AddCommand(std::make_unique<TClientCommandKeyValue>());
+ AddCommand(std::make_unique<TClientCommandTabletExec>());
+ AddCommand(std::make_unique<TClientCommandTabletKill>());
+ AddCommand(std::make_unique<TClientCommandTabletSchemeTx>());
}
virtual void Parse(TConfig& config) override {
@@ -273,9 +273,9 @@ public:
TClientCommandTablet::TClientCommandTablet()
: TClientCommandTree("tablet", {}, "Tablet infrastructure administration")
{
- AddCommand(std::make_unique<TClientCommandTabletN>());
- AddCommand(std::make_unique<TClientCommandDrainNode>());
- AddCommand(std::make_unique<TClientCommandFillNode>());
+ AddCommand(std::make_unique<TClientCommandTabletN>());
+ AddCommand(std::make_unique<TClientCommandDrainNode>());
+ AddCommand(std::make_unique<TClientCommandFillNode>());
}
}
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_tenant.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_tenant.cpp
index db44a3a516..696361b379 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_tenant.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_tenant.cpp
@@ -600,10 +600,10 @@ public:
TClientCommandTenantUnits()
: TClientCommandTree("units", {}, "")
{
- AddCommand(std::make_unique<TClientCommandTenantAddUnits>());
- AddCommand(std::make_unique<TClientCommandTenantRemoveUnits>());
- AddCommand(std::make_unique<TClientCommandTenantRegisterUnits>());
- AddCommand(std::make_unique<TClientCommandTenantDeregisterUnits>());
+ AddCommand(std::make_unique<TClientCommandTenantAddUnits>());
+ AddCommand(std::make_unique<TClientCommandTenantRemoveUnits>());
+ AddCommand(std::make_unique<TClientCommandTenantRegisterUnits>());
+ AddCommand(std::make_unique<TClientCommandTenantDeregisterUnits>());
}
};
@@ -612,7 +612,7 @@ public:
TClientCommandTenantPools()
: TClientCommandTree("pools", {}, "")
{
- AddCommand(std::make_unique<TClientCommandTenantAddPools>());
+ AddCommand(std::make_unique<TClientCommandTenantAddPools>());
}
};
@@ -621,11 +621,11 @@ public:
TClientCommandTenantName()
: TClientCommandTree("*", {}, "<database name>")
{
- AddCommand(std::make_unique<TClientCommandTenantCreate>());
- AddCommand(std::make_unique<TClientCommandTenantPools>());
- AddCommand(std::make_unique<TClientCommandTenantRemove>());
- AddCommand(std::make_unique<TClientCommandTenantStatus>());
- AddCommand(std::make_unique<TClientCommandTenantUnits>());
+ AddCommand(std::make_unique<TClientCommandTenantCreate>());
+ AddCommand(std::make_unique<TClientCommandTenantPools>());
+ AddCommand(std::make_unique<TClientCommandTenantRemove>());
+ AddCommand(std::make_unique<TClientCommandTenantStatus>());
+ AddCommand(std::make_unique<TClientCommandTenantUnits>());
}
virtual void Parse(TConfig& config) override {
@@ -638,9 +638,9 @@ public:
TClientCommandTenant::TClientCommandTenant()
: TClientCommandTree("database", {"db", "tenant"}, "Database administration")
{
- AddCommand(std::make_unique<TClientCommandTenantName>());
- AddCommand(std::make_unique<TClientCommandTenantList>());
- AddCommand(std::make_unique<TClientCommandTenantOptions>());
+ AddCommand(std::make_unique<TClientCommandTenantName>());
+ AddCommand(std::make_unique<TClientCommandTenantList>());
+ AddCommand(std::make_unique<TClientCommandTenantOptions>());
}
}
diff --git a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
index 819c1478d1..acd7c7afb5 100644
--- a/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
+++ b/ydb/core/driver_lib/run/kikimr_services_initializers.cpp
@@ -1300,7 +1300,7 @@ void TBootstrapperInitializer::InitializeServices(
for (const ui32 bootstrapperNode : boot.GetNode()) {
if (bootstrapperNode == NodeId) {
- TIntrusivePtr<TTabletStorageInfo> info(TabletStorageInfoFromProto(boot.GetInfo()));
+ TIntrusivePtr<TTabletStorageInfo> info(TabletStorageInfoFromProto(boot.GetInfo()));
auto tabletType = BootstrapperTypeToTabletType(boot.GetType());
@@ -1351,7 +1351,7 @@ void TTabletsInitializer::InitializeServices(
for (const auto& tabletConfig: Config.GetTabletsConfig().GetTablet()) {
for (ui32 bootstrapperNode: tabletConfig.GetNode()) {
if (bootstrapperNode == setup->NodeId) {
- auto tabletInfo = TabletStorageInfoFromProto(tabletConfig.GetInfo());
+ auto tabletInfo = TabletStorageInfoFromProto(tabletConfig.GetInfo());
auto tabletType = tabletConfig.GetType();
auto tabletSetup = CreateTablet(tabletType, tabletInfo, appData, CustomTablets);
diff --git a/ydb/core/engine/mkql_engine_flat_ut.cpp b/ydb/core/engine/mkql_engine_flat_ut.cpp
index e2b12e2d7a..e5dc327568 100644
--- a/ydb/core/engine/mkql_engine_flat_ut.cpp
+++ b/ydb/core/engine/mkql_engine_flat_ut.cpp
@@ -4776,10 +4776,10 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &DoubleShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [["1"];["11"];"mapped_11";"Ok"];
- [["5"];["15"];"mapped_15";"Ok"];
- [["4"];["14"];"mapped_14";"Ok"];
- [["6"];["16"];"mapped_16";"Ok"]
+ [["1"];["11"];"mapped_11";"Ok"];
+ [["5"];["15"];"mapped_15";"Ok"];
+ [["4"];["14"];"mapped_14";"Ok"];
+ [["6"];["16"];"mapped_16";"Ok"]
]]])___", res);
}
@@ -4839,14 +4839,14 @@ Value {
NKqp::CompareYson(R"___([
[[
- [["1"];["11"];["Ok"]];
- [["3"];["13"];["Bad"]];
- [["5"];["15"];["Ok"]]
+ [["1"];["11"];["Ok"]];
+ [["3"];["13"];["Bad"]];
+ [["5"];["15"];["Ok"]]
]];
[[
- [["1"];["Ok"]];
- [["3"];["Bad"]];
- [["5"];["Ok"]]
+ [["1"];["Ok"]];
+ [["3"];["Bad"]];
+ [["5"];["Ok"]]
]]
])___", res);
}
@@ -4906,9 +4906,9 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &SingleShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [[[["3"];["Bad"]]];["1"];["Ok"]];
- [[[["3"];["Bad"]]];["3"];["Bad"]];
- [[[["3"];["Bad"]]];["5"];["Ok"]]
+ [[[["3"];["Bad"]]];["1"];["Ok"]];
+ [[[["3"];["Bad"]]];["3"];["Bad"]];
+ [[[["3"];["Bad"]]];["5"];["Ok"]]
]]])___", res);
}
@@ -4983,8 +4983,8 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &SingleShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [["1"];["11"];"mapped_11";["Ok"]];
- [["5"];["15"];"mapped_15";["Ok"]]
+ [["1"];["11"];"mapped_11";["Ok"]];
+ [["5"];["15"];"mapped_15";["Ok"]]
]]])___", res);
}
@@ -5083,10 +5083,10 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(checkpgm, res, &TwoShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[[
- [["0"];["0"]];
- [["1"];["1"]];
- [["3"];["3"]];
- [["5"];["5"]]];
+ [["0"];["0"]];
+ [["1"];["1"]];
+ [["3"];["3"]];
+ [["5"];["5"]]];
%false]]])___", res);
}
}
@@ -5174,10 +5174,10 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &TwoShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [[["1"];["Ok"]];[["2"];["20"]]];
- [[["1"];["Ok"]];[["4"];["40"]]];
- [[["3"];["Bad"]];[["2"];["20"]]];
- [[["3"];["Bad"]];[["4"];["40"]]]
+ [[["1"];["Ok"]];[["2"];["20"]]];
+ [[["1"];["Ok"]];[["4"];["40"]]];
+ [[["3"];["Bad"]];[["2"];["20"]]];
+ [[["3"];["Bad"]];[["4"];["40"]]]
]]])___", res);
}
@@ -5272,10 +5272,10 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &TwoShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [["1"];[["20"];["40"]]];
- [["Ok"];[["20"];["40"]]];
- [["3"];[["20"];["40"]]];
- [["Bad"];[["20"];["40"]]]
+ [["1"];[["20"];["40"]]];
+ [["Ok"];[["20"];["40"]]];
+ [["3"];[["20"];["40"]]];
+ [["Bad"];[["20"];["40"]]]
]]])___", res);
}
@@ -5386,10 +5386,10 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &DoubleShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [["Value1"];["6"]];
- [["Value2"];["3"]];
- [["Value2"];["8"]];
- [["Value3"];["4"]]
+ [["Value1"];["6"]];
+ [["Value2"];["3"]];
+ [["Value2"];["8"]];
+ [["Value3"];["4"]]
]]])___", res);
}
@@ -5496,9 +5496,9 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &DoubleShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [["Value1"];["6"]];
- [["Value2"];["11"]];
- [["Value3"];["4"]]
+ [["Value1"];["6"]];
+ [["Value2"];["11"]];
+ [["Value3"];["4"]]
]]])___", res);
}
@@ -5579,8 +5579,8 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &DoubleShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [["3"];["Value2"]];
- [["2"];["Value2"]]
+ [["3"];["Value2"]];
+ [["2"];["Value2"]]
]]])___", res);
}
@@ -5653,10 +5653,10 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &DoubleShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([[[
- [["1"];["Value1"]];
- [["2"];["Value2"]];
- [["3"];["Value1"]];
- [["4"];["Value2"]]
+ [["1"];["Value1"]];
+ [["2"];["Value2"]];
+ [["3"];["Value1"]];
+ [["4"];["Value2"]]
]]])___", res);
}
@@ -6347,8 +6347,8 @@ Value {
UNIT_ASSERT_EQUAL(driver.Run(pgm, res, &TwoShardResolver), IEngineFlat::EStatus::Complete);
NKqp::CompareYson(R"___([
- [[[[["1"];["Value1"]];[["3"];["Value3"]]];
- [[["2"];["12"];["20"]];[["4"];["14"];["40"]]]]]
+ [[[[["1"];["Value1"]];[["3"];["Value3"]]];
+ [[["2"];["12"];["20"]];[["4"];["14"];["40"]]]]]
])___", res);
}
diff --git a/ydb/core/erasure/erasure.cpp b/ydb/core/erasure/erasure.cpp
index a41b027932..2b80c49d5e 100644
--- a/ydb/core/erasure/erasure.cpp
+++ b/ydb/core/erasure/erasure.cpp
@@ -201,8 +201,8 @@ public:
Prime = type.Prime();
CrcMode = crcMode;
-
- Data = nullptr;
+
+ Data = nullptr;
}
template <bool isStripe>
@@ -277,7 +277,7 @@ public:
// Use the remaining parts to fill in the last block
// Write the tail of the data
if (TailSize) {
- char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
+ char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
TBufferDataPart bufferDataPart;
PrepareLastBlockData<isStripe>(lastBlockSource, bufferDataPart);
@@ -534,7 +534,7 @@ public:
// Use the remaining parts to fill in the last block
// Write the tail of the data
if (TailSize) {
- char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
+ char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
TBufferDataPart bufferDataPart;
if (!isFromDataParts) {
PrepareLastBlockData<isStripe>(lastBlockSource, bufferDataPart);
@@ -569,7 +569,7 @@ public:
// Use the remaining parts to fill in the last block
// Write the tail of the data
if (hasTail && outPartSet.IsSplitDone()) {
- char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
+ char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
TBufferDataPart bufferDataPart;
if (!isFromDataParts) {
PrepareLastBlockData<isStripe>(lastBlockSource, bufferDataPart);
@@ -753,7 +753,7 @@ public:
// Read the tail of the data
if (TailSize && (partSet.Parts[presentPartIdx].Size + readPosition > WholeBlocks * ColumnSize)) {
TRACE("EoDiagonalRestorePart tail" << Endl);
- char lastBlock[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
+ char lastBlock[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
TBufferDataPart bufferDataPart;
PrepareLastBlockPointers<isStripe>(lastBlock, bufferDataPart);
@@ -1119,7 +1119,7 @@ public:
partSet, 0ull, WholeBlocks, missingDataPartIdxA, missingDataPartIdxB);
if (TailSize) {
- char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
+ char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
TBufferDataPart bufferDataPart;
PrepareLastBlockPointers<isStripe>(lastBlockSource, bufferDataPart);
@@ -1151,7 +1151,7 @@ public:
partSet, 0ull, WholeBlocks, missingDataPartIdxA, missingDataPartIdxB, missingDataPartIdxC);
if (TailSize) {
- char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
+ char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
TBufferDataPart bufferDataPart;
PrepareLastBlockPointers<isStripe>(lastBlockSource, bufferDataPart);
@@ -1197,7 +1197,7 @@ public:
if (TailSize && (partSet.Parts[presentPartIdx].Size + readPosition > WholeBlocks * ColumnSize)) {
TRACE("EoMainRestoreParts restore tail" << Endl);
- char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
+ char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
TBufferDataPart bufferDataPart;
PrepareLastBlockPointers<isStripe>(lastBlockSource, bufferDataPart);
@@ -1316,8 +1316,8 @@ public:
beginBlockIdx, beginBlockIdx + wholeBlocks, missingDataPartIdx);
if (TailSize && (partSet.Parts[presentPartIdx].Size + readPosition > WholeBlocks * ColumnSize)) {
- TRACE("Restore tail, restoreFullData# " << restoreFullData << " restoreParts# " << restoreParts << Endl);
- char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
+ TRACE("Restore tail, restoreFullData# " << restoreFullData << " restoreParts# " << restoreParts << Endl);
+ char lastBlockSource[MAX_TOTAL_PARTS * (MAX_TOTAL_PARTS - 2) * sizeof(ui64)] = {};
TBufferDataPart bufferDataPart;
PrepareLastBlockPointers<isStripe>(lastBlockSource, bufferDataPart);
diff --git a/ydb/core/grpc_services/rpc_alter_table.cpp b/ydb/core/grpc_services/rpc_alter_table.cpp
index d1f2755b66..1014ac6219 100644
--- a/ydb/core/grpc_services/rpc_alter_table.cpp
+++ b/ydb/core/grpc_services/rpc_alter_table.cpp
@@ -526,8 +526,8 @@ private:
Request_->ReplyWithYdbStatus(status);
Die(ctx);
}
- ui64 TxId = 0;
- ui64 SchemeshardId = 0;
+ ui64 TxId = 0;
+ ui64 SchemeshardId = 0;
TActorId SchemeCache;
TString DatabaseName;
TIntrusivePtr<NTxProxy::TTxProxyMon> TxProxyMon;
diff --git a/ydb/core/grpc_services/rpc_cancel_operation.cpp b/ydb/core/grpc_services/rpc_cancel_operation.cpp
index 579f927c80..ac844e3ee1 100644
--- a/ydb/core/grpc_services/rpc_cancel_operation.cpp
+++ b/ydb/core/grpc_services/rpc_cancel_operation.cpp
@@ -115,7 +115,7 @@ public:
private:
TOperationId OperationId;
- ui64 RawOperationId = 0;
+ ui64 RawOperationId = 0;
}; // TCancelOperationRPC
diff --git a/ydb/core/grpc_services/rpc_forget_operation.cpp b/ydb/core/grpc_services/rpc_forget_operation.cpp
index 8b250125ca..e17c7c20f1 100644
--- a/ydb/core/grpc_services/rpc_forget_operation.cpp
+++ b/ydb/core/grpc_services/rpc_forget_operation.cpp
@@ -115,7 +115,7 @@ public:
private:
TOperationId OperationId;
- ui64 RawOperationId = 0;
+ ui64 RawOperationId = 0;
}; // TForgetOperationRPC
diff --git a/ydb/core/grpc_services/rpc_get_operation.cpp b/ydb/core/grpc_services/rpc_get_operation.cpp
index 6f7a140686..2e206e74eb 100644
--- a/ydb/core/grpc_services/rpc_get_operation.cpp
+++ b/ydb/core/grpc_services/rpc_get_operation.cpp
@@ -274,7 +274,7 @@ private:
}
TOperationId OperationId_;
- ui64 RawOperationId_ = 0;
+ ui64 RawOperationId_ = 0;
TActorId PipeActorId_;
};
diff --git a/ydb/core/grpc_services/rpc_read_columns.cpp b/ydb/core/grpc_services/rpc_read_columns.cpp
index 4baae606a9..3088f4ce73 100644
--- a/ydb/core/grpc_services/rpc_read_columns.cpp
+++ b/ydb/core/grpc_services/rpc_read_columns.cpp
@@ -81,8 +81,8 @@ public:
, Timeout(TDuration::Seconds(DEFAULT_TIMEOUT_SEC))
, WaitingResolveReply(false)
, Finished(false)
- , MinKeyInclusive(0)
- , MaxKeyInclusive(0)
+ , MinKeyInclusive(0)
+ , MaxKeyInclusive(0)
, ShardRequestCount(0)
, ShardReplyCount(0)
, SysViewMaxRows(100000)
diff --git a/ydb/core/grpc_services/rpc_yq.cpp b/ydb/core/grpc_services/rpc_yq.cpp
index 6fe5f868d6..ef5504e98d 100644
--- a/ydb/core/grpc_services/rpc_yq.cpp
+++ b/ydb/core/grpc_services/rpc_yq.cpp
@@ -81,12 +81,12 @@ public:
FolderId = path.back();
if (!FolderId) {
ReplyWithStatus("Folder id is empty", StatusIds::BAD_REQUEST);
- return;
+ return;
}
if (FolderId.length() > 1024) {
ReplyWithStatus("Folder id length greater than 1024 characters: " + FolderId, StatusIds::BAD_REQUEST);
- return;
+ return;
}
const TString& internalToken = proxyCtx->GetInternalToken();
diff --git a/ydb/core/kqp/common/kqp_gateway.h b/ydb/core/kqp/common/kqp_gateway.h
index 1e06beca39..3510fc6968 100644
--- a/ydb/core/kqp/common/kqp_gateway.h
+++ b/ydb/core/kqp/common/kqp_gateway.h
@@ -101,7 +101,7 @@ public:
struct TKqpSnapshotHandle : public IKqpGateway::TGenericResult {
TKqpSnapshot Snapshot;
NActors::TActorId ManagingActor;
- NKikimrIssues::TStatusIds::EStatusCode Status = NKikimrIssues::TStatusIds::UNKNOWN;
+ NKikimrIssues::TStatusIds::EStatusCode Status = NKikimrIssues::TStatusIds::UNKNOWN;
};
struct TExecPhysicalRequest : private TMoveOnly {
diff --git a/ydb/core/kqp/executer/kqp_partition_helper.cpp b/ydb/core/kqp/executer/kqp_partition_helper.cpp
index ac786f6c24..4ea433861a 100644
--- a/ydb/core/kqp/executer/kqp_partition_helper.cpp
+++ b/ydb/core/kqp/executer/kqp_partition_helper.cpp
@@ -146,7 +146,7 @@ THashMap<ui64, TShardParamValuesAndRanges> PartitionParamByKeyPrefix(const NDq::
for (TPartitionWithRange& partitionWithRange : rangePartitions) {
ui64 shardId = partitionWithRange.PartitionInfo->ShardId;
- shardParamValues[shardId].emplace_back(paramValue);
+ shardParamValues[shardId].emplace_back(paramValue);
auto& shardData = ret[shardId];
if (partitionWithRange.FullRange) {
diff --git a/ydb/core/kqp/host/kqp_host.cpp b/ydb/core/kqp/host/kqp_host.cpp
index 44af6d1168..9d84bb4b6c 100644
--- a/ydb/core/kqp/host/kqp_host.cpp
+++ b/ydb/core/kqp/host/kqp_host.cpp
@@ -1051,7 +1051,7 @@ public:
TypesCtx->TimeProvider = TAppData::TimeProvider;
TypesCtx->RandomProvider = TAppData::RandomProvider;
TypesCtx->Modules = ModuleResolver;
- TypesCtx->UserDataStorage = MakeIntrusive<TUserDataStorage>(nullptr, TUserDataTable(), nullptr, nullptr);
+ TypesCtx->UserDataStorage = MakeIntrusive<TUserDataStorage>(nullptr, TUserDataTable(), nullptr, nullptr);
TypesCtx->JsonQueryReturnsJsonDocument = true;
// Result provider
diff --git a/ydb/core/kqp/host/kqp_run_scan.cpp b/ydb/core/kqp/host/kqp_run_scan.cpp
index 7c91ae8200..15e2577534 100644
--- a/ydb/core/kqp/host/kqp_run_scan.cpp
+++ b/ydb/core/kqp/host/kqp_run_scan.cpp
@@ -116,7 +116,7 @@ public:
if (!handle.Snapshot.IsValid()) {
YQL_CLOG(NOTICE, ProviderKqp) << "Failed to create persistent snapshot. "
<< "Status: " << NKikimrIssues::TStatusIds_EStatusCode_Name(handle.Status)
- << ", issues: " << handle.Issues().ToString();
+ << ", issues: " << handle.Issues().ToString();
TIssue issue("Failed to create persistent snapshot");
switch (handle.Status) {
@@ -135,7 +135,7 @@ public:
break;
}
- for (const auto& subIssue: handle.Issues()) {
+ for (const auto& subIssue: handle.Issues()) {
issue.AddSubIssue(MakeIntrusive<TIssue>(subIssue));
}
ctx.AddError(issue);
diff --git a/ydb/core/kqp/host/kqp_runner.cpp b/ydb/core/kqp/host/kqp_runner.cpp
index 42b4eca7c6..ca7855c185 100644
--- a/ydb/core/kqp/host/kqp_runner.cpp
+++ b/ydb/core/kqp/host/kqp_runner.cpp
@@ -705,7 +705,7 @@ public:
break;
}
- for (const auto& subIssue: handle.Issues()) {
+ for (const auto& subIssue: handle.Issues()) {
issue.AddSubIssue(MakeIntrusive<TIssue>(subIssue));
}
ctx.AddError(issue);
diff --git a/ydb/core/kqp/kqp_ic_gateway.cpp b/ydb/core/kqp/kqp_ic_gateway.cpp
index 47489a9bd5..ff641ae270 100644
--- a/ydb/core/kqp/kqp_ic_gateway.cpp
+++ b/ydb/core/kqp/kqp_ic_gateway.cpp
@@ -37,10 +37,10 @@
namespace NKikimr {
namespace NKqp {
-using NYql::TIssue;
-using TIssuesIds = NYql::TIssuesIds;
+using NYql::TIssue;
+using TIssuesIds = NYql::TIssuesIds;
using namespace NThreading;
-using namespace NYql::NCommon;
+using namespace NYql::NCommon;
using namespace NSchemeShard;
using namespace NKikimrSchemeOp;
@@ -65,7 +65,7 @@ namespace {
template <class TResult>
static NThreading::TFuture<TResult> NotImplemented() {
TResult result;
- result.AddIssue(TIssue({}, "Not implemented in interconnect gateway."));
+ result.AddIssue(TIssue({}, "Not implemented in interconnect gateway."));
return NThreading::MakeFuture(result);
}
@@ -783,7 +783,7 @@ public:
message << ", reason: " << response.GetSchemeShardReason();
}
- Promise.SetValue(ResultFromError<TResult>(TIssue({}, message)));
+ Promise.SetValue(ResultFromError<TResult>(TIssue({}, message)));
this->Die(ctx);
}
@@ -1006,7 +1006,7 @@ public:
return Cluster;
}
- TMaybe<NYql::TKikimrClusterConfig> GetClusterConfig(const TString& cluster) override {
+ TMaybe<NYql::TKikimrClusterConfig> GetClusterConfig(const TString& cluster) override {
Y_UNUSED(cluster);
return {};
}
@@ -1089,7 +1089,7 @@ public:
}
}
- TFuture<TGenericResult> CreateTable(NYql::TKikimrTableMetadataPtr metadata, bool createDir) override {
+ TFuture<TGenericResult> CreateTable(NYql::TKikimrTableMetadataPtr metadata, bool createDir) override {
using TRequest = TEvTxUserProxy::TEvProposeTransaction;
try {
@@ -1870,7 +1870,7 @@ public:
handle.Snapshot = response.Snapshot;
handle.ManagingActor = snapMgrActorId;
handle.Status = response.Status;
- handle.AddIssues(response.Issues);
+ handle.AddIssues(response.Issues);
promise.SetValue(handle);
}
);
@@ -1895,7 +1895,7 @@ public:
IKqpGateway::TKqpSnapshotHandle handle;
handle.Snapshot = response.Snapshot;
handle.Status = response.Status;
- handle.AddIssues(response.Issues);
+ handle.AddIssues(response.Issues);
promise.SetValue(handle);
}
);
diff --git a/ydb/core/kqp/provider/yql_kikimr_datasource.cpp b/ydb/core/kqp/provider/yql_kikimr_datasource.cpp
index 65ef7eb932..7d674b281b 100644
--- a/ydb/core/kqp/provider/yql_kikimr_datasource.cpp
+++ b/ydb/core/kqp/provider/yql_kikimr_datasource.cpp
@@ -320,7 +320,7 @@ public:
for (auto& cluster : Gateway->GetClusters()) {
auto token = defaultToken;
- if (auto credential = Types.FindCredential(TString("default_") + cluster)) {
+ if (auto credential = Types.FindCredential(TString("default_") + cluster)) {
if (credential->Category != KikimrProviderName) {
ctx.AddError(TIssue({}, TStringBuilder()
<< "Mismatch credential category, for cluster " << cluster
diff --git a/ydb/core/kqp/provider/yql_kikimr_gateway.cpp b/ydb/core/kqp/provider/yql_kikimr_gateway.cpp
index e49f84b5e1..25e893f83c 100644
--- a/ydb/core/kqp/provider/yql_kikimr_gateway.cpp
+++ b/ydb/core/kqp/provider/yql_kikimr_gateway.cpp
@@ -48,7 +48,7 @@ TKikimrClusterMapping::TKikimrClusterMapping(const TKikimrGatewayConfig& config)
for (size_t i = 0; i < config.ClusterMappingSize(); ++i) {
const TKikimrClusterConfig& cluster = config.GetClusterMapping(i);
- auto name = cluster.GetName();
+ auto name = cluster.GetName();
if (Clusters.contains(name)) {
ythrow yexception() << "TKikimrGatewayConfig: Duplicate cluster name: " << name;
diff --git a/ydb/core/kqp/provider/yql_kikimr_provider.cpp b/ydb/core/kqp/provider/yql_kikimr_provider.cpp
index 635d164827..a1cee242ee 100644
--- a/ydb/core/kqp/provider/yql_kikimr_provider.cpp
+++ b/ydb/core/kqp/provider/yql_kikimr_provider.cpp
@@ -422,7 +422,7 @@ NNodes::TCoAtomList BuildColumnsList(
.Done();
}
-NNodes::TCoAtomList BuildKeyColumnsList(const TKikimrTableDescription& table, TPositionHandle pos, TExprContext& ctx) {
+NNodes::TCoAtomList BuildKeyColumnsList(const TKikimrTableDescription& table, TPositionHandle pos, TExprContext& ctx) {
TVector<TExprBase> columnsToSelect;
columnsToSelect.reserve(table.Metadata->KeyColumnNames.size());
for (auto key : table.Metadata->KeyColumnNames) {
@@ -741,9 +741,9 @@ bool AddDmlIssue(const TIssue& issue, bool strictDml, TExprContext& ctx) {
ctx.AddError(newIssue);
return false;
} else {
- if (!ctx.AddWarning(issue)) {
- return false;
- }
+ if (!ctx.AddWarning(issue)) {
+ return false;
+ }
return true;
}
}
diff --git a/ydb/core/kqp/provider/yql_kikimr_results.cpp b/ydb/core/kqp/provider/yql_kikimr_results.cpp
index 8ec93f416d..f6d002a137 100644
--- a/ydb/core/kqp/provider/yql_kikimr_results.cpp
+++ b/ydb/core/kqp/provider/yql_kikimr_results.cpp
@@ -26,13 +26,13 @@ bool ResultsOverflow(ui64 rows, ui64 bytes, const IDataProvider::TFillSettings&
return false;
}
-void WriteValueToYson(const TStringStream& stream, NCommon::TYsonResultWriter& writer, const NKikimrMiniKQL::TType& type,
+void WriteValueToYson(const TStringStream& stream, NCommon::TYsonResultWriter& writer, const NKikimrMiniKQL::TType& type,
const NKikimrMiniKQL::TValue& value, const TVector<TString>* fieldsOrder,
const IDataProvider::TFillSettings& fillSettings, bool& truncated, bool firstLevel = false)
{
switch (type.GetKind()) {
case NKikimrMiniKQL::ETypeKind::Void:
- writer.OnVoid();
+ writer.OnVoid();
return;
case NKikimrMiniKQL::ETypeKind::Data:
@@ -98,7 +98,7 @@ void WriteValueToYson(const TStringStream& stream, NCommon::TYsonResultWriter& w
}
if (value.HasFloat()) {
- writer.OnFloatScalar(value.GetFloat());
+ writer.OnFloatScalar(value.GetFloat());
}
if (value.HasDouble()) {
@@ -351,8 +351,8 @@ void KikimrResultToYson(const TStringStream& stream, NYson::TYsonWriter& writer,
const TVector<TString>& columnHints, const IDataProvider::TFillSettings& fillSettings, bool& truncated)
{
truncated = false;
- NCommon::TYsonResultWriter resultWriter(writer);
- WriteValueToYson(stream, resultWriter, result.GetType(), result.GetValue(), columnHints.empty() ? nullptr : &columnHints,
+ NCommon::TYsonResultWriter resultWriter(writer);
+ WriteValueToYson(stream, resultWriter, result.GetType(), result.GetValue(), columnHints.empty() ? nullptr : &columnHints,
fillSettings, truncated, true);
}
diff --git a/ydb/core/mind/bscontroller/group_geometry_info.h b/ydb/core/mind/bscontroller/group_geometry_info.h
index 10e5daedba..46b76f590b 100644
--- a/ydb/core/mind/bscontroller/group_geometry_info.h
+++ b/ydb/core/mind/bscontroller/group_geometry_info.h
@@ -1,4 +1,4 @@
-#pragma once
+#pragma once
#include "defs.h"
@@ -73,7 +73,7 @@ namespace NKikimr::NBsController {
i64 requiredSpace) const {
TString error;
for (const bool requireOperational : {true, false}) {
- if (mapper.AllocateGroup(groupId, group, replacedDiskIds, numReplacedDisks, forbid,
+ if (mapper.AllocateGroup(groupId, group, replacedDiskIds, numReplacedDisks, forbid,
requiredSpace, requireOperational, error)) {
return;
}
diff --git a/ydb/core/mind/bscontroller/impl.h b/ydb/core/mind/bscontroller/impl.h
index ba311a254c..d32d8925c7 100644
--- a/ydb/core/mind/bscontroller/impl.h
+++ b/ydb/core/mind/bscontroller/impl.h
@@ -905,8 +905,8 @@ public:
using Table = Schema::BoxStoragePool;
struct TPDiskFilter {
- Schema::BoxStoragePoolPDiskFilter::BoxId::Type BoxId{};
- Schema::BoxStoragePoolPDiskFilter::StoragePoolId::Type StoragePoolId{};
+ Schema::BoxStoragePoolPDiskFilter::BoxId::Type BoxId{};
+ Schema::BoxStoragePoolPDiskFilter::StoragePoolId::Type StoragePoolId{};
TMaybe<Schema::BoxStoragePoolPDiskFilter::TypeCol::Type> Type;
TMaybe<Schema::BoxStoragePoolPDiskFilter::SharedWithOs::Type> SharedWithOs;
TMaybe<Schema::BoxStoragePoolPDiskFilter::ReadCentric::Type> ReadCentric;
diff --git a/ydb/core/mind/configured_tablet_bootstrapper.cpp b/ydb/core/mind/configured_tablet_bootstrapper.cpp
index 008acd2b40..ff67157425 100644
--- a/ydb/core/mind/configured_tablet_bootstrapper.cpp
+++ b/ydb/core/mind/configured_tablet_bootstrapper.cpp
@@ -67,7 +67,7 @@ class TConfiguredTabletBootstrapper : public TActorBootstrapped<TConfiguredTable
// not apply config
const ui32 selfNode = SelfId().NodeId();
if (Find(config.GetNode(), selfNode) != config.GetNode().end()) {
- TIntrusivePtr<TTabletStorageInfo> storageInfo = TabletStorageInfoFromProto(config.GetInfo());
+ TIntrusivePtr<TTabletStorageInfo> storageInfo = TabletStorageInfoFromProto(config.GetInfo());
const auto *appData = AppData();
// extract from kikimr_services_initializer
diff --git a/ydb/core/mind/hive/hive_impl.cpp b/ydb/core/mind/hive/hive_impl.cpp
index 58ca2ac3e4..ff5eb14a4b 100644
--- a/ydb/core/mind/hive/hive_impl.cpp
+++ b/ydb/core/mind/hive/hive_impl.cpp
@@ -271,7 +271,7 @@ void THive::ProcessBootQueue() {
}
void THive::PostponeProcessBootQueue(TDuration after) {
- if (!ProcessBootQueuePostponed) {
+ if (!ProcessBootQueuePostponed) {
BLOG_D("PostponeProcessBootQueue (" << after << ")");
ProcessBootQueuePostponed = true;
Schedule(after, new TEvPrivate::TEvPostponeProcessBootQueue());
@@ -1086,7 +1086,7 @@ THive::TBestNodeResult THive::FindBestNode(const TTabletInfo& tablet) {
for (size_t i = 0; i < dcs.size(); ++i) {
dataCentersGroupsHolder[i].AddDataCenter(dcs[i]);
dataCentersGroupsHolder[i].AddDataCenterNum(DataCenterFromString(dcs[i]));
- dataCentersGroupsPointers[i] = dataCentersGroupsHolder.data() + i;
+ dataCentersGroupsPointers[i] = dataCentersGroupsHolder.data() + i;
}
dataCentersGroups = TArrayRef<const NKikimrHive::TDataCentersGroup*>(dataCentersGroupsPointers.data(), dcTablets.size());
}
@@ -1104,11 +1104,11 @@ THive::TBestNodeResult THive::FindBestNode(const TTabletInfo& tablet) {
const NKikimrHive::TDataCentersGroup* dcGroup = dataCentersGroups[numGroup];
if (dcGroup->DataCenterSize()) {
for (TDataCenterId dc : dcGroup->GetDataCenter()) {
- indexDC2Group[dc] = candidateGroups.data() + numGroup;
+ indexDC2Group[dc] = candidateGroups.data() + numGroup;
}
} else {
for (const ui64 dcId : dcGroup->GetDataCenterNum()) {
- indexDC2Group[DataCenterToString(dcId)] = candidateGroups.data() + numGroup;
+ indexDC2Group[DataCenterToString(dcId)] = candidateGroups.data() + numGroup;
}
}
}
@@ -1137,7 +1137,7 @@ THive::TBestNodeResult THive::FindBestNode(const TTabletInfo& tablet) {
<< " checking candidates group " << (itCandidateNodes - candidateGroups.begin() + 1)
<< " of " << candidateGroups.size());
}
-
+
selectedNodes.clear();
selectedNodes.reserve(candidateNodes.size());
@@ -1602,7 +1602,7 @@ void THive::FillTabletInfo(NKikimrHive::TEvResponseHiveInfo& response, ui64 tabl
if (!follower.IsRunning()) {
tabletInfo.SetLastAliveTimestamp(follower.Statistics.GetLastAliveTimestamp());
}
- tabletInfo.SetRestartsPerPeriod(follower.Statistics.RestartTimestampSize());
+ tabletInfo.SetRestartsPerPeriod(follower.Statistics.RestartTimestampSize());
if (req.GetReturnMetrics()) {
tabletInfo.MutableMetrics()->CopyFrom(follower.GetResourceValues());
}
@@ -1820,7 +1820,7 @@ void THive::Handle(TEvHive::TEvCutTabletHistory::TPtr& ev) {
void THive::Handle(TEvHive::TEvDrainNode::TPtr& ev) {
Execute(CreateSwitchDrainOn(ev->Get()->Record.GetNodeID(),
{
- .Persist = ev->Get()->Record.GetPersist(),
+ .Persist = ev->Get()->Record.GetPersist(),
.KeepDown = ev->Get()->Record.GetKeepDown(),
.DrainInFlight = ev->Get()->Record.GetDrainInFlight(),
}, ev->Sender));
@@ -2189,7 +2189,7 @@ THive::THive(TTabletStorageInfo *info, const TActorId &tablet)
, TTabletExecutedFlat(info, tablet, new NMiniKQL::TMiniKQLFactory)
, HiveUid(Max<ui32>())
, HiveDomain(Max<ui32>())
- , RootHiveId()
+ , RootHiveId()
, HiveId(Max<ui64>())
, HiveGeneration(0)
, PipeClientCacheConfig(new NTabletPipe::TBoundedClientCacheConfig())
diff --git a/ydb/core/mind/hive/monitoring.cpp b/ydb/core/mind/hive/monitoring.cpp
index 7e9a83b354..a18761a55f 100644
--- a/ydb/core/mind/hive/monitoring.cpp
+++ b/ydb/core/mind/hive/monitoring.cpp
@@ -2010,7 +2010,7 @@ public:
TNodeId NodeId = 0;
bool Wait = true;
TActorId WaitActorId;
-
+
TTxMonEvent_DrainNode(const TActorId& source, NMon::TEvRemoteHttpInfo::TPtr& ev, TSelf* hive)
: TBase(hive)
, Event(ev->Release())
@@ -2035,9 +2035,9 @@ public:
void Complete(const TActorContext& ctx) override {
if (Wait) {
- Self->Execute(Self->CreateSwitchDrainOn(NodeId, {.Persist = true, .KeepDown = true}, WaitActorId));
+ Self->Execute(Self->CreateSwitchDrainOn(NodeId, {.Persist = true, .KeepDown = true}, WaitActorId));
} else {
- Self->Execute(Self->CreateSwitchDrainOn(NodeId, {.Persist = true, .KeepDown = true}, {}));
+ Self->Execute(Self->CreateSwitchDrainOn(NodeId, {.Persist = true, .KeepDown = true}, {}));
ctx.Send(Source, new NMon::TEvRemoteJsonInfoRes("{\"status\":\"SCHEDULED\"}"));
}
}
diff --git a/ydb/core/mind/local.cpp b/ydb/core/mind/local.cpp
index 09fc15f76d..7d205133c8 100644
--- a/ydb/core/mind/local.cpp
+++ b/ydb/core/mind/local.cpp
@@ -378,7 +378,7 @@ class TLocalNodeRegistrar : public TActorBootstrapped<TLocalNodeRegistrar> {
void Handle(TEvLocal::TEvBootTablet::TPtr &ev, const TActorContext &ctx) {
NKikimrLocal::TEvBootTablet &record = ev->Get()->Record;
- TIntrusivePtr<TTabletStorageInfo> info(TabletStorageInfoFromProto(record.GetInfo()));
+ TIntrusivePtr<TTabletStorageInfo> info(TabletStorageInfoFromProto(record.GetInfo()));
info->HiveId = HiveId;
TTabletId tabletId(info->TabletID, record.GetFollowerId());
LOG_DEBUG_S(ctx, NKikimrServices::LOCAL, "TLocalNodeRegistrar::Handle TEvLocal::TEvBootTablet tabletId:"
diff --git a/ydb/core/mind/table_adapter.h b/ydb/core/mind/table_adapter.h
index f0ec8db1e2..80bf5596e7 100644
--- a/ydb/core/mind/table_adapter.h
+++ b/ydb/core/mind/table_adapter.h
@@ -279,7 +279,7 @@ namespace NKikimr {
template<typename TCallback>
void ForEachInlineTable(TCallback &&callback) const {
- Value.ForEachInlineTable(std::forward<TCallback>(callback));
+ Value.ForEachInlineTable(std::forward<TCallback>(callback));
}
};
@@ -318,8 +318,8 @@ namespace NKikimr {
template<typename TCallback>
void ForEachInlineTable(TCallback &&callback) const {
- Value.ForEachInlineTable(callback);
- Rest.ForEachInlineTable(callback);
+ Value.ForEachInlineTable(callback);
+ Rest.ForEachInlineTable(callback);
}
};
@@ -483,7 +483,7 @@ namespace NKikimr {
}
};
try {
- TBase::Apply(param, [&](auto *adapter) { adapter->ForEachInlineTable(processInlineTable); });
+ TBase::Apply(param, [&](auto *adapter) { adapter->ForEachInlineTable(processInlineTable); });
} catch (const TNotReady&) {
return false;
}
@@ -554,7 +554,7 @@ namespace NKikimr {
template<typename TCallback>
void ForEachInlineTable(TCallback &&callback) const {
- Cells.ForEachInlineTable(std::forward<TCallback>(callback));
+ Cells.ForEachInlineTable(std::forward<TCallback>(callback));
}
};
diff --git a/ydb/core/mon/mon.h b/ydb/core/mon/mon.h
index 1cb5dbecd0..657ea21e02 100644
--- a/ydb/core/mon/mon.h
+++ b/ydb/core/mon/mon.h
@@ -12,7 +12,7 @@ namespace NActors {
class TActorSystem;
struct TActorId;
- class TMon : public NMonitoring::TMonService2 {
+ class TMon : public NMonitoring::TMonService2 {
public:
using TRequestAuthorizer = std::function<IEventHandle*(const NActors::TActorId& owner, NMonitoring::IMonHttpRequest& request)>;
diff --git a/ydb/core/mon/ya.make b/ydb/core/mon/ya.make
index c717b0f5b9..830918e64e 100644
--- a/ydb/core/mon/ya.make
+++ b/ydb/core/mon/ya.make
@@ -2,7 +2,7 @@ LIBRARY()
OWNER(
ddoarn
- xenoxeno
+ xenoxeno
g:kikimr
)
diff --git a/ydb/core/mon_alloc/profiler.cpp b/ydb/core/mon_alloc/profiler.cpp
index bfff45c180..5abbb32048 100644
--- a/ydb/core/mon_alloc/profiler.cpp
+++ b/ydb/core/mon_alloc/profiler.cpp
@@ -43,7 +43,7 @@ namespace NActors {
}
};
- class TLfAllocProfiler: public IProfilerLogic {
+ class TLfAllocProfiler: public IProfilerLogic {
public:
void Start() override {
NAllocProfiler::StartAllocationSampling(true);
@@ -56,7 +56,7 @@ namespace NActors {
}
};
- class TYtAllocProfiler: public IProfilerLogic {
+ class TYtAllocProfiler: public IProfilerLogic {
public:
TYtAllocProfiler() {
Init();
@@ -158,7 +158,7 @@ namespace NActors {
#endif // PROFILE_MEMORY_ALLOCATIONS
#if defined(EXEC_PROFILER_ENABLED)
- class TExecProfiler: public IProfilerLogic {
+ class TExecProfiler: public IProfilerLogic {
public:
void Start() override {
ResetProfile();
@@ -184,7 +184,7 @@ namespace NActors {
};
#endif // EXEC_PROFILER_ENABLED
- struct TFakeProfiler: public IProfilerLogic {
+ struct TFakeProfiler: public IProfilerLogic {
void Start() override {
}
@@ -195,7 +195,7 @@ namespace NActors {
}
};
- std::unique_ptr<IProfilerLogic> CreateProfiler() {
+ std::unique_ptr<IProfilerLogic> CreateProfiler() {
const auto& info = NMalloc::MallocInfo();
TStringBuf name(info.Name);
@@ -232,7 +232,7 @@ namespace NActors {
private:
const TDynamicCountersPtr DynamicCounters;
const TString Dir;
- const std::unique_ptr<IProfilerLogic> Profiler;
+ const std::unique_ptr<IProfilerLogic> Profiler;
TCounters Counters;
bool IsProfiling = false;
@@ -245,7 +245,7 @@ namespace NActors {
return ACTORLIB_STATS;
}
- TProfilerActor(TDynamicCountersPtr counters, TString dir, std::unique_ptr<IProfilerLogic> profiler)
+ TProfilerActor(TDynamicCountersPtr counters, TString dir, std::unique_ptr<IProfilerLogic> profiler)
: TActor(&TThis::StateWork)
, DynamicCounters(std::move(counters))
, Dir(std::move(dir))
@@ -466,10 +466,10 @@ namespace NActors {
}
}
- IActor* CreateProfilerActor(TDynamicCountersPtr counters, TString dir, std::unique_ptr<IProfilerLogic> profiler) {
+ IActor* CreateProfilerActor(TDynamicCountersPtr counters, TString dir, std::unique_ptr<IProfilerLogic> profiler) {
return new TProfilerActor(
std::move(counters),
std::move(dir),
- profiler ? std::move(profiler) : CreateProfiler());
+ profiler ? std::move(profiler) : CreateProfiler());
}
}
diff --git a/ydb/core/mon_alloc/profiler.h b/ydb/core/mon_alloc/profiler.h
index 4fba8941da..bacc5ee7bd 100644
--- a/ydb/core/mon_alloc/profiler.h
+++ b/ydb/core/mon_alloc/profiler.h
@@ -104,12 +104,12 @@ namespace NActors {
};
};
- struct IProfilerLogic {
- virtual ~IProfilerLogic() = default;
- virtual void Start() = 0;
+ struct IProfilerLogic {
+ virtual ~IProfilerLogic() = default;
+ virtual void Start() = 0;
virtual void Stop(IOutputStream& out, size_t limit, bool forLog) = 0;
- };
-
+ };
+
inline TActorId MakeProfilerID(ui32 nodeId) {
char x[12] = {'p', 'r', 'o', 'f', 'i', 'l', 'e', 'r', 's', 'e', 'r', 'v'};
return TActorId(nodeId, TStringBuf(x, 12));
@@ -117,6 +117,6 @@ namespace NActors {
IActor* CreateProfilerActor(
TIntrusivePtr<NMonitoring::TDynamicCounters> counters,
- TString dir,
- std::unique_ptr<IProfilerLogic> profiler = nullptr);
+ TString dir,
+ std::unique_ptr<IProfilerLogic> profiler = nullptr);
}
diff --git a/ydb/core/persqueue/key.h b/ydb/core/persqueue/key.h
index 098c67cf7d..77278e9c92 100644
--- a/ydb/core/persqueue/key.h
+++ b/ydb/core/persqueue/key.h
@@ -134,7 +134,7 @@ public:
}
TKey()
- : TKey(TypeNone, 0, 0, 0, 0, 0)
+ : TKey(TypeNone, 0, 0, 0, 0, 0)
{}
virtual ~TKey()
diff --git a/ydb/core/persqueue/partition.cpp b/ydb/core/persqueue/partition.cpp
index cc8e2419cf..0086d96355 100644
--- a/ydb/core/persqueue/partition.cpp
+++ b/ydb/core/persqueue/partition.cpp
@@ -4613,11 +4613,11 @@ void TPartition::ProcessRead(const TActorContext& ctx, TReadInfo&& info, const u
return;
}
- const TString user = info.User;
+ const TString user = info.User;
bool res = ReadInfo.insert({cookie, std::move(info)}).second;
Y_VERIFY(res);
- THolder<TEvPQ::TEvBlobRequest> request(new TEvPQ::TEvBlobRequest(user, cookie, Partition,
+ THolder<TEvPQ::TEvBlobRequest> request(new TEvPQ::TEvBlobRequest(user, cookie, Partition,
lastOffset, std::move(blobs)));
ctx.Send(BlobCache, request.Release());
diff --git a/ydb/core/persqueue/type_coders.h b/ydb/core/persqueue/type_coders.h
index 26c2566d32..5079e42623 100644
--- a/ydb/core/persqueue/type_coders.h
+++ b/ydb/core/persqueue/type_coders.h
@@ -166,7 +166,7 @@ public:
inline size_t Save(TFlatBlobDataOutputStream* output, TType value) {
const auto zigZagged = static_cast<i64>(ZigZagEncode(value));
- char varIntOut[sizeof(zigZagged) + 1];
+ char varIntOut[sizeof(zigZagged) + 1];
auto bytes = out_long(zigZagged, varIntOut);
output->Write(varIntOut, bytes);
return bytes;
diff --git a/ydb/core/protos/services.proto b/ydb/core/protos/services.proto
index c17c8a7dc3..98e24ff749 100644
--- a/ydb/core/protos/services.proto
+++ b/ydb/core/protos/services.proto
@@ -707,40 +707,40 @@ message TActivity {
EXPORT_SCAN_ACTOR = 392;
EXPORT_YT_UPLOADER_ACTOR = 393;
EXPORT_S3_UPLOADER_ACTOR = 394;
- YF_SYNC_SERVICE_ACTOR = 395;
- YF_SYNC_SERVICE_WORKER_ACTOR = 396;
- YF_DESCRIPTIONS_SERVICE_ACTOR = 397;
- YF_GW_SERIALIZER_ACTOR = 398;
- YF_SERVICE_ACTOR = 399;
- YF_WORKER_ACTOR_SERVICE_ACTOR = 400;
- YF_RTMR_WORKER_ACTOR_SERVICE_ACTOR = 401;
- YF_NAMESERVER_WRAPPER_ACTOR = 402;
- YF_DIRECT_CLIENT_BALANCER_ACTOR = 403;
- YF_AGENT_ACTOR = 404;
- YF_ARCHIVE_CACHE_ACTOR = 405;
- YF_ARTIFACT_CACHE_ACTOR = 406;
- YF_SKY_GET_COMMAND_ACTOR = 407;
- YF_UNPACKER_ACTOR = 408;
- YF_CALL_BALANCER_ACTOR = 409;
- YF_GATEWAY_ACTOR = 410;
- YF_GATEWAY_SERVICE_ACTOR = 411;
- YF_GRPC_SERVICE_COUNTER_UPDATER_ACTOR = 412;
- YF_INFLIGHT_REQUEST_ACTOR = 413;
- YF_MON_SERVICE_ACTOR = 414;
+ YF_SYNC_SERVICE_ACTOR = 395;
+ YF_SYNC_SERVICE_WORKER_ACTOR = 396;
+ YF_DESCRIPTIONS_SERVICE_ACTOR = 397;
+ YF_GW_SERIALIZER_ACTOR = 398;
+ YF_SERVICE_ACTOR = 399;
+ YF_WORKER_ACTOR_SERVICE_ACTOR = 400;
+ YF_RTMR_WORKER_ACTOR_SERVICE_ACTOR = 401;
+ YF_NAMESERVER_WRAPPER_ACTOR = 402;
+ YF_DIRECT_CLIENT_BALANCER_ACTOR = 403;
+ YF_AGENT_ACTOR = 404;
+ YF_ARCHIVE_CACHE_ACTOR = 405;
+ YF_ARTIFACT_CACHE_ACTOR = 406;
+ YF_SKY_GET_COMMAND_ACTOR = 407;
+ YF_UNPACKER_ACTOR = 408;
+ YF_CALL_BALANCER_ACTOR = 409;
+ YF_GATEWAY_ACTOR = 410;
+ YF_GATEWAY_SERVICE_ACTOR = 411;
+ YF_GRPC_SERVICE_COUNTER_UPDATER_ACTOR = 412;
+ YF_INFLIGHT_REQUEST_ACTOR = 413;
+ YF_MON_SERVICE_ACTOR = 414;
YF_SKY_FETCHER_ACTOR = 415;
- YF_LIST_INSTANCES_JOB_CACHE_ACTOR = 416;
- YF_IC_CLIENT_ACTOR = 417;
- YF_DIRECT_CLIENT_SENDER_ACTOR = 418;
- YF_QUEUED_FECTER_ACTOR = 419;
- YF_GRPC_JOB_SERVICE_ACTOR = 420;
- YF_HTTP_FETCHER_ACTOR = 421;
+ YF_LIST_INSTANCES_JOB_CACHE_ACTOR = 416;
+ YF_IC_CLIENT_ACTOR = 417;
+ YF_DIRECT_CLIENT_SENDER_ACTOR = 418;
+ YF_QUEUED_FECTER_ACTOR = 419;
+ YF_GRPC_JOB_SERVICE_ACTOR = 420;
+ YF_HTTP_FETCHER_ACTOR = 421;
YF_JOB_SERVICE_LEADER_ACTOR = 422;
- YF_JOB_SERVICE_PROXY_ACTOR = 423;
- YF_JOB_SERVICE_SESSION_MONITOR_ACTOR = 424;
- YF_JOB_SERVICE_WORKER_ACTOR = 425;
- YF_LOCAL_FS_FETCHER_ACTOR = 426;
- YF_RUNNER_WORKER_PRIVATE_ACTOR = 427;
- YF_RUNNER_PRIVATE_ACTOR = 428;
+ YF_JOB_SERVICE_PROXY_ACTOR = 423;
+ YF_JOB_SERVICE_SESSION_MONITOR_ACTOR = 424;
+ YF_JOB_SERVICE_WORKER_ACTOR = 425;
+ YF_LOCAL_FS_FETCHER_ACTOR = 426;
+ YF_RUNNER_WORKER_PRIVATE_ACTOR = 427;
+ YF_RUNNER_PRIVATE_ACTOR = 428;
YF_REQUEST_REGISTER_FUNCTION_ACTOR = 429;
SERVICE_ACCOUNT_SERVICE_ACTOR = 430;
BLOCKSTORE_DISK_REGISTRY_PROXY = 431;
diff --git a/ydb/core/tablet/tablet_counters.h b/ydb/core/tablet/tablet_counters.h
index a8cc27e9ed..3760e54b6f 100644
--- a/ydb/core/tablet/tablet_counters.h
+++ b/ydb/core/tablet/tablet_counters.h
@@ -297,7 +297,7 @@ class TCountersArray : TNonCopyable {
friend class TTabletCountersBase;
friend class TTabletLabeledCountersBase;
public:
- typedef std::shared_ptr<T> TCountersHolder;
+ typedef std::shared_ptr<T> TCountersHolder;
//
TCountersArray(ui32 countersQnt)
: CountersQnt(countersQnt)
@@ -305,8 +305,8 @@ public:
, Counters(nullptr)
{
if (CountersQnt) {
- CountersHolder.reset(new T[CountersQnt](), &CheckedArrayDelete<T>);
- Counters = CountersHolder.get();
+ CountersHolder.reset(new T[CountersQnt](), &CheckedArrayDelete<T>);
+ Counters = CountersHolder.get();
}
}
@@ -348,13 +348,13 @@ private:
//
void Reset(const TCountersArray<T>& rp) {
Y_VERIFY(!CountersQnt);
- CountersHolder.reset();
+ CountersHolder.reset();
Counters = nullptr;
CountersQnt = rp.CountersQnt;
if (CountersQnt) {
- CountersHolder.reset(new T[CountersQnt](), &CheckedArrayDelete<T>);
- Counters = CountersHolder.get();
+ CountersHolder.reset(new T[CountersQnt](), &CheckedArrayDelete<T>);
+ Counters = CountersHolder.get();
}
for (ui32 i = 0, e = CountersQnt; i < e; ++i) {
diff --git a/ydb/core/tablet/tablet_req_blockbs.cpp b/ydb/core/tablet/tablet_req_blockbs.cpp
index 7e2e94ec95..3307303af6 100644
--- a/ydb/core/tablet/tablet_req_blockbs.cpp
+++ b/ydb/core/tablet/tablet_req_blockbs.cpp
@@ -110,7 +110,7 @@ class TTabletReqBlockBlobStorage : public TActorBootstrapped<TTabletReqBlockBlob
case NKikimrProto::OK:
if (++Replied == ReqActors.size())
return ReplyAndDie(NKikimrProto::OK);
- break;
+ break;
default:
return ReplyAndDie(msg->Status, msg->ErrorReason);
}
diff --git a/ydb/core/tablet/tablet_sys.cpp b/ydb/core/tablet/tablet_sys.cpp
index 44bfac7b2d..3bf40f620d 100644
--- a/ydb/core/tablet/tablet_sys.cpp
+++ b/ydb/core/tablet/tablet_sys.cpp
@@ -473,7 +473,7 @@ void TTablet::HandleByFollower(TEvTablet::TEvFollowerUpdate::TPtr &ev) {
// update storage info for case of channel history upgrade
if (record.HasTabletStorageInfo()) {
- Info = TabletStorageInfoFromProto(record.GetTabletStorageInfo());
+ Info = TabletStorageInfoFromProto(record.GetTabletStorageInfo());
}
// Drop currently running graph rebuild request
@@ -1024,7 +1024,7 @@ TTablet::TLogEntry* TTablet::MakeLogEntry(TEvTablet::TCommitInfo &commitInfo, NK
const ui32 step = Graph.NextEntry++;
TLogEntry *entry = new TLogEntry(step, Graph.Confirmed, 0);
- Graph.Queue.push_back(std::unique_ptr<TLogEntry>(entry));
+ Graph.Queue.push_back(std::unique_ptr<TLogEntry>(entry));
Graph.Index[step] = entry;
entry->IsSnapshot = commitInfo.IsSnapshot || commitInfo.IsTotalSnapshot;
entry->IsTotalSnapshot = commitInfo.IsTotalSnapshot;
@@ -1093,9 +1093,9 @@ void TTablet::Handle(TEvTablet::TEvCommit::TPtr &ev) {
bool TTablet::HandleNext(TEvTablet::TEvCommit::TPtr &ev) {
TEvTablet::TEvCommit *msg = ev->Get();
- std::unique_ptr<NKikimrTabletBase::TTabletLogEntry> x(new NKikimrTabletBase::TTabletLogEntry());
+ std::unique_ptr<NKikimrTabletBase::TTabletLogEntry> x(new NKikimrTabletBase::TTabletLogEntry());
- TLogEntry *entry = msg->PreCommited ? FindLogEntry(*msg, *x) : MakeLogEntry(*msg, x.get());
+ TLogEntry *entry = msg->PreCommited ? FindLogEntry(*msg, *x) : MakeLogEntry(*msg, x.get());
if (entry == nullptr) {
CancelTablet(TEvTablet::TEvTabletDead::ReasonInconsistentCommit);
@@ -1178,7 +1178,7 @@ bool TTablet::HandleNext(TEvTablet::TEvCommit::TPtr &ev) {
entry->StateStorageConfirmed = true; // todo: do real query against state-storage (optionally?)
entry->Task = Register(
- CreateTabletReqWriteLog(SelfId(), logid, x.release(), msg->References, msg->CommitTactic, Info.Get())
+ CreateTabletReqWriteLog(SelfId(), logid, x.release(), msg->References, msg->CommitTactic, Info.Get())
);
Graph.StepsInFlight += 1;
@@ -1345,7 +1345,7 @@ void TTablet::SendFollowerAuxUpdate(TLeaderInfo& info, const TActorId& follower,
bool TTablet::ProgressCommitQueue() {
const ui64 tabletId = TabletID();
while (!Graph.Queue.empty()) {
- TLogEntry *entry = Graph.Queue.front().get();
+ TLogEntry *entry = Graph.Queue.front().get();
if (!entry->Commited)
break;
@@ -1357,7 +1357,7 @@ bool TTablet::ProgressCommitQueue() {
}
if (entry->FollowerUpdate && LeaderInfo && step >= Graph.MinFollowerUpdate) {
- Graph.PostponedFollowerUpdates.emplace_back(std::move(Graph.Queue.front()));
+ Graph.PostponedFollowerUpdates.emplace_back(std::move(Graph.Queue.front()));
} else if (entry->WaitFollowerGcAck) {
Send(UserTablet, new TEvTablet::TEvFollowerGcApplied(tabletId, StateStorageInfo.KnownGeneration, step, TDuration::Max()));
}
@@ -1379,7 +1379,7 @@ void TTablet::ProgressFollowerQueue() {
const ui32 goodUntil = LeaderInfo ? Graph.ConfirmedCommited : Max<ui32>();
while (!Graph.PostponedFollowerUpdates.empty()) {
- TLogEntry *entry = Graph.PostponedFollowerUpdates.front().get();
+ TLogEntry *entry = Graph.PostponedFollowerUpdates.front().get();
const ui32 step = entry->Step;
if (step > goodUntil)
break;
@@ -1635,7 +1635,7 @@ bool TTablet::CheckBlobStorageError() {
if (!Graph.Queue.empty()) {
// Check if the head entry is still waiting to be committed
- TLogEntry *entry = Graph.Queue.front().get();
+ TLogEntry *entry = Graph.Queue.front().get();
if (entry->Step < BlobStorageErrorStep && entry->Task) {
// Commit still inflight, wait for result
return false;
diff --git a/ydb/core/tablet/tablet_sys.h b/ydb/core/tablet/tablet_sys.h
index 661d75a4e0..5707848b71 100644
--- a/ydb/core/tablet/tablet_sys.h
+++ b/ydb/core/tablet/tablet_sys.h
@@ -112,7 +112,7 @@ class TTablet : public TActor<TTablet> {
};
struct TGraph {
- typedef TDeque<std::unique_ptr<TLogEntry>> TQueueType;
+ typedef TDeque<std::unique_ptr<TLogEntry>> TQueueType;
typedef THashMap<ui32, TLogEntry *> TIndex;
TQueueType Queue;
diff --git a/ydb/core/tablet_flat/flat_executor_borrowlogic.cpp b/ydb/core/tablet_flat/flat_executor_borrowlogic.cpp
index bd52264b10..3ad9fc8fad 100644
--- a/ydb/core/tablet_flat/flat_executor_borrowlogic.cpp
+++ b/ydb/core/tablet_flat/flat_executor_borrowlogic.cpp
@@ -454,7 +454,7 @@ void TExecutorBorrowLogic::RestoreFollowerBorrowedInfo(const TLogoBlobID &blobId
if (proto.StorageInfoSize() > 0) {
Y_VERIFY(proto.StorageInfoSize() == 1);
- storedInfo.LoanInfo.StorageInfo = TabletStorageInfoFromProto(proto.GetStorageInfo(0));
+ storedInfo.LoanInfo.StorageInfo = TabletStorageInfoFromProto(proto.GetStorageInfo(0));
UpdateStorageInfo(storedInfo.LoanInfo.StorageInfo.Get());
}
}
@@ -499,7 +499,7 @@ void TExecutorBorrowLogic::RestoreBorrowedInfo(const TLogoBlobID &blobId, const
if (proto.StorageInfoSize() > 0) {
Y_VERIFY(proto.StorageInfoSize() == 1);
- storedInfo.LoanInfo.StorageInfo = TabletStorageInfoFromProto(proto.GetStorageInfo(0));
+ storedInfo.LoanInfo.StorageInfo = TabletStorageInfoFromProto(proto.GetStorageInfo(0));
UpdateStorageInfo(storedInfo.LoanInfo.StorageInfo.Get());
}
}
diff --git a/ydb/core/tablet_flat/flat_page_frames.h b/ydb/core/tablet_flat/flat_page_frames.h
index 0edcc1eacc..d4c78bd898 100644
--- a/ydb/core/tablet_flat/flat_page_frames.h
+++ b/ydb/core/tablet_flat/flat_page_frames.h
@@ -72,7 +72,7 @@ namespace NPage {
: Raw(std::move(raw))
, End({ Max<TRowId>(), Max<ui16>(), 0, 0 })
{
- Y_VERIFY(uintptr_t(Raw.data()) % alignof(TEntry) == 0);
+ Y_VERIFY(uintptr_t(Raw.data()) % alignof(TEntry) == 0);
auto got = NPage::THello().Read(Raw, EPage::Frames);
diff --git a/ydb/core/tablet_flat/flat_range_cache.cpp b/ydb/core/tablet_flat/flat_range_cache.cpp
index dbac2c7981..77ffa06dd9 100644
--- a/ydb/core/tablet_flat/flat_range_cache.cpp
+++ b/ydb/core/tablet_flat/flat_range_cache.cpp
@@ -19,13 +19,13 @@ TArrayRef<TCell> TKeyRangeCache::AllocateArrayCopy(TSpecialMemoryPool* pool, TAr
return { };
}
- TCell* rawPtr = static_cast<TCell*>(pool->Allocate(sizeof(TCell) * key.size()));
- TCell* nextCell = rawPtr;
+ TCell* rawPtr = static_cast<TCell*>(pool->Allocate(sizeof(TCell) * key.size()));
+ TCell* nextCell = rawPtr;
for (const TCell& cell : key) {
- new(nextCell++) TCell(cell);
+ new(nextCell++) TCell(cell);
}
- return TArrayRef<TCell>(rawPtr, key.size());
+ return TArrayRef<TCell>(rawPtr, key.size());
}
TCell TKeyRangeCache::AllocateCellCopy(TSpecialMemoryPool* pool, const TCell& cell) {
diff --git a/ydb/core/tablet_flat/flat_redo_writer.h b/ydb/core/tablet_flat/flat_redo_writer.h
index dafeeb38e2..f2f3d2744d 100644
--- a/ydb/core/tablet_flat/flat_redo_writer.h
+++ b/ydb/core/tablet_flat/flat_redo_writer.h
@@ -91,8 +91,8 @@ namespace NRedo {
TEvBegin_v1 ev{ { ERedo::Begin, 0, 0x8000, size },
tail, head, serial, stamp };
- void* evBegin = &ev;
- return Push(TString(NUtil::NBin::ToByte(evBegin), size), size);
+ void* evBegin = &ev;
+ return Push(TString(NUtil::NBin::ToByte(evBegin), size), size);
}
TWriter& EvFlush(ui32 table, ui64 stamp, TEpoch epoch)
@@ -101,8 +101,8 @@ namespace NRedo {
TEvFlush ev{ { ERedo::Flush, 0, 0x8000, size },
table, 0, stamp, epoch.ToRedoLog() };
- void* evBegin = &ev;
- return Push(TString(NUtil::NBin::ToByte(evBegin), size), size);
+ void* evBegin = &ev;
+ return Push(TString(NUtil::NBin::ToByte(evBegin), size), size);
}
TWriter& EvAnnex(TArrayRef<const NPageCollection::TGlobId> blobs)
diff --git a/ydb/core/tablet_flat/flat_scan_actor.h b/ydb/core/tablet_flat/flat_scan_actor.h
index 5cbf2797a0..a9eeed963b 100644
--- a/ydb/core/tablet_flat/flat_scan_actor.h
+++ b/ydb/core/tablet_flat/flat_scan_actor.h
@@ -247,7 +247,7 @@ namespace NOps {
conf.AheadLo = Args.AheadLo;
conf.AheadHi = Args.AheadHi;
- if (Conf.ReadAheadLo != Max<ui64>() && Conf.ReadAheadLo <= conf.AheadLo) {
+ if (Conf.ReadAheadLo != Max<ui64>() && Conf.ReadAheadLo <= conf.AheadLo) {
conf.AheadLo = Conf.ReadAheadLo;
}
diff --git a/ydb/core/tablet_flat/flat_util_binary.h b/ydb/core/tablet_flat/flat_util_binary.h
index 7a6ee78c13..748fcc408a 100644
--- a/ydb/core/tablet_flat/flat_util_binary.h
+++ b/ydb/core/tablet_flat/flat_util_binary.h
@@ -24,13 +24,13 @@ namespace NBin {
return SizeOfOne_<T>(left) + SizeOf(std::forward<Tail>(tail)...);
}
- template<typename T, typename = TStdLayoutOrVoid<T>>
+ template<typename T, typename = TStdLayoutOrVoid<T>>
static inline char* ToByte(T *ptr)
{
return static_cast<char*>(static_cast<void*>(ptr));
}
- template<typename T, typename = TStdLayoutOrVoid<T>>
+ template<typename T, typename = TStdLayoutOrVoid<T>>
static inline const char* ToByte(const T *ptr)
{
return static_cast<char*>(static_cast<void*>(ptr));
diff --git a/ydb/core/tablet_flat/util_deref.h b/ydb/core/tablet_flat/util_deref.h
index 49d02d690a..599dbc79e6 100644
--- a/ydb/core/tablet_flat/util_deref.h
+++ b/ydb/core/tablet_flat/util_deref.h
@@ -8,9 +8,9 @@ namespace NKikimr {
template<typename T>
using TStdLayout = std::enable_if_t<std::is_standard_layout<T>::value, T>;
- template<typename T>
- using TStdLayoutOrVoid = std::enable_if_t<std::is_standard_layout<T>::value || std::is_void<T>::value, T>;
-
+ template<typename T>
+ using TStdLayoutOrVoid = std::enable_if_t<std::is_standard_layout<T>::value || std::is_void<T>::value, T>;
+
template<typename T, typename = TStdLayout<T>>
struct TDeref {
static constexpr const T* At(const void *ptr, size_t off = 0) noexcept {
diff --git a/ydb/core/tx/datashard/datashard__conditional_erase_rows.cpp b/ydb/core/tx/datashard/datashard__conditional_erase_rows.cpp
index 026b14e461..09ce701797 100644
--- a/ydb/core/tx/datashard/datashard__conditional_erase_rows.cpp
+++ b/ydb/core/tx/datashard/datashard__conditional_erase_rows.cpp
@@ -545,7 +545,7 @@ void TDataShard::Handle(TEvDataShard::TEvConditionalEraseRowsRequest::TPtr& ev,
return;
}
- ui64 localTxId = 0;
+ ui64 localTxId = 0;
THolder<IScan> scan;
switch (condition) {
diff --git a/ydb/core/tx/datashard/datashard__init.cpp b/ydb/core/tx/datashard/datashard__init.cpp
index dc12c49959..a1f646f903 100644
--- a/ydb/core/tx/datashard/datashard__init.cpp
+++ b/ydb/core/tx/datashard/datashard__init.cpp
@@ -288,7 +288,7 @@ bool TDataShard::TTxInit::ReadEverything(TTransactionContext &txc) {
TString splitDescr;
LOAD_SYS_BYTES(db, Schema::Sys_DstSplitDescription, splitDescr);
if (!splitDescr.empty()) {
- Self->DstSplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
+ Self->DstSplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
bool parseOk = ParseFromStringNoSizeLimit(*Self->DstSplitDescription, splitDescr);
Y_VERIFY(parseOk);
}
@@ -342,7 +342,7 @@ bool TDataShard::TTxInit::ReadEverything(TTransactionContext &txc) {
TString splitDescr;
LOAD_SYS_BYTES(db, Schema::Sys_SrcSplitDescription, splitDescr);
if (!splitDescr.empty()) {
- Self->SrcSplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
+ Self->SrcSplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
bool parseOk = ParseFromStringNoSizeLimit(*Self->SrcSplitDescription, splitDescr);
Y_VERIFY(parseOk);
diff --git a/ydb/core/tx/datashard/datashard_active_transaction.h b/ydb/core/tx/datashard/datashard_active_transaction.h
index 43abd525e1..84c9fddb0d 100644
--- a/ydb/core/tx/datashard/datashard_active_transaction.h
+++ b/ydb/core/tx/datashard/datashard_active_transaction.h
@@ -30,7 +30,7 @@ class TActiveTransaction;
struct TScanState {
TString LastKey;
ui64 Bytes = 0;
- Ydb::StatusIds::StatusCode StatusCode = Ydb::StatusIds::STATUS_CODE_UNSPECIFIED;
+ Ydb::StatusIds::StatusCode StatusCode = Ydb::StatusIds::STATUS_CODE_UNSPECIFIED;
NYql::TIssues Issues;
};
diff --git a/ydb/core/tx/datashard/datashard_distributed_erase.cpp b/ydb/core/tx/datashard/datashard_distributed_erase.cpp
index fae7d2edeb..73b352cf67 100644
--- a/ydb/core/tx/datashard/datashard_distributed_erase.cpp
+++ b/ydb/core/tx/datashard/datashard_distributed_erase.cpp
@@ -953,7 +953,7 @@ class TDistEraser: public TActorBootstrapped<TDistEraser> {
case TEvTxProxy::TEvProposeTransactionStatus::EStatus::StatusDeclinedNoSpace:
case TEvTxProxy::TEvProposeTransactionStatus::EStatus::StatusRestarting: // TODO: retry
CancelProposal();
- [[fallthrough]];
+ [[fallthrough]];
default:
Mon->ClientTxStatusCoordinatorDeclined->Inc();
return CoordinatorDeclined(TStringBuilder() << "Tx failed to plan"
diff --git a/ydb/core/tx/datashard/datashard_impl.h b/ydb/core/tx/datashard/datashard_impl.h
index 11313474f8..6ce61100e1 100644
--- a/ydb/core/tx/datashard/datashard_impl.h
+++ b/ydb/core/tx/datashard/datashard_impl.h
@@ -1924,8 +1924,8 @@ private:
ui64 DstSplitOpId;
ui64 SrcSplitOpId;
bool DstSplitSchemaInitialized = false;
- std::shared_ptr<NKikimrTxDataShard::TSplitMergeDescription> DstSplitDescription;
- std::shared_ptr<NKikimrTxDataShard::TSplitMergeDescription> SrcSplitDescription;
+ std::shared_ptr<NKikimrTxDataShard::TSplitMergeDescription> DstSplitDescription;
+ std::shared_ptr<NKikimrTxDataShard::TSplitMergeDescription> SrcSplitDescription;
THashSet<TActorId> SrcAckSplitTo;
THashMap<TActorId, THashSet<ui64>> SrcAckPartitioningChangedTo;
const ui32 SysTablesToTransferAtSplit[4] = {
diff --git a/ydb/core/tx/datashard/datashard_split_dst.cpp b/ydb/core/tx/datashard/datashard_split_dst.cpp
index 6575081001..f2e1d158a6 100644
--- a/ydb/core/tx/datashard/datashard_split_dst.cpp
+++ b/ydb/core/tx/datashard/datashard_split_dst.cpp
@@ -53,7 +53,7 @@ public:
}
}
- Self->DstSplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>(Ev->Get()->Record.GetSplitDescription());
+ Self->DstSplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>(Ev->Get()->Record.GetSplitDescription());
for (ui32 i = 0; i < Self->DstSplitDescription->SourceRangesSize(); ++i) {
ui64 srcTabletId = Self->DstSplitDescription->GetSourceRanges(i).GetTabletID();
diff --git a/ydb/core/tx/datashard/datashard_split_src.cpp b/ydb/core/tx/datashard/datashard_split_src.cpp
index a7349fc9cf..3f772dfecc 100644
--- a/ydb/core/tx/datashard/datashard_split_src.cpp
+++ b/ydb/core/tx/datashard/datashard_split_src.cpp
@@ -31,7 +31,7 @@ public:
if (Self->State == TShardState::Ready) {
Self->SrcAckSplitTo.insert(Ev->Sender);
Self->SrcSplitOpId = opId;
- Self->SrcSplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>(Ev->Get()->Record.GetSplitDescription());
+ Self->SrcSplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>(Ev->Get()->Record.GetSplitDescription());
// Persist split description
TString splitDescr;
diff --git a/ydb/core/tx/datashard/datashard_switch_mvcc_state.cpp b/ydb/core/tx/datashard/datashard_switch_mvcc_state.cpp
index 04c09cf74b..9bb382e58c 100644
--- a/ydb/core/tx/datashard/datashard_switch_mvcc_state.cpp
+++ b/ydb/core/tx/datashard/datashard_switch_mvcc_state.cpp
@@ -51,7 +51,7 @@ void TDataShard::CheckMvccStateChangeCanStart(const TActorContext& ctx) {
return;
}
- [[fallthrough]];
+ [[fallthrough]];
case TSwitchState::SWITCHING: {
ui64 txInFly = TxInFly();
@@ -60,7 +60,7 @@ void TDataShard::CheckMvccStateChangeCanStart(const TActorContext& ctx) {
SetCounter(COUNTER_MVCC_STATE_CHANGE_WAIT_IMMEDIATE_TX_IN_FLY, immediateTxInFly);
if (txInFly == 0 && immediateTxInFly == 0 && !Pipeline.HasWaitingSchemeOps())
Execute(CreateTxExecuteMvccStateChange(), ctx);
- break;
+ break;
}
case TSwitchState::DONE:
return;
diff --git a/ydb/core/tx/datashard/datashard_user_table.h b/ydb/core/tx/datashard/datashard_user_table.h
index 0dab30cb84..611e3f3f3a 100644
--- a/ydb/core/tx/datashard/datashard_user_table.h
+++ b/ydb/core/tx/datashard/datashard_user_table.h
@@ -337,9 +337,9 @@ struct TUserTable : public TThrRefBase {
ui32 ColIdEpoch = Max<ui32>();
ui32 ColIdUpdateNo = Max<ui32>();
- ui64 Tablet = 0;
- ui64 Epoch = 0;
- ui64 UpdateNo = 0;
+ ui64 Tablet = 0;
+ ui64 Epoch = 0;
+ ui64 UpdateNo = 0;
};
ui32 LocalTid = Max<ui32>();
diff --git a/ydb/core/tx/schemeshard/schemeshard__init.cpp b/ydb/core/tx/schemeshard/schemeshard__init.cpp
index 650506549e..8974fea3b8 100644
--- a/ydb/core/tx/schemeshard/schemeshard__init.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__init.cpp
@@ -2702,10 +2702,10 @@ struct TSchemeShard::TTxInit : public TTransactionBase<TSchemeShard> {
Y_VERIFY(dataColId == alterData->IndexDataColumns.size());
alterData->IndexDataColumns.emplace_back(dataColName);
} else {
- leakedDataColumnsAlterData.emplace_back(pathId, dataColId);
+ leakedDataColumnsAlterData.emplace_back(pathId, dataColId);
}
} else {
- leakedDataColumnsAlterData.emplace_back(pathId, dataColId);
+ leakedDataColumnsAlterData.emplace_back(pathId, dataColId);
}
if (!rowset.Next())
@@ -3162,7 +3162,7 @@ struct TSchemeShard::TTxInit : public TTransactionBase<TSchemeShard> {
}
} else if (txState.TxType == TTxState::TxSplitTablePartition || txState.TxType == TTxState::TxMergeTablePartition) {
Y_VERIFY(!extraData.empty(), "Split Tx must have non-empty split description");
- txState.SplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
+ txState.SplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
bool deserializeRes = ParseFromStringNoSizeLimit(*txState.SplitDescription, extraData);
Y_VERIFY(deserializeRes);
splitOpIds.push_back(operationId);
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_split_merge.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_split_merge.cpp
index 645d7f37e1..73a0be0428 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_split_merge.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_split_merge.cpp
@@ -577,7 +577,7 @@ public:
firstRangeBegin = TSerializedCellVec::Serialize(firstKey);
}
- op.SplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
+ op.SplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
// Fill src shards
TString prevRangeEnd = firstRangeBegin;
for (ui64 pi : srcPartitionIdxs) {
@@ -656,7 +656,7 @@ public:
// Last dst shard ends where src shard used to end
rangeEnds.push_back(tableInfo->GetPartitions()[srcPartitionIdx].EndOfRange);
- op.SplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
+ op.SplitDescription = std::make_shared<NKikimrTxDataShard::TSplitMergeDescription>();
auto* srcRange = op.SplitDescription->AddSourceRanges();
auto srcShardIdx = tableInfo->GetPartitions()[srcPartitionIdx].ShardIdx;
srcRange->SetShardIdx(ui64(srcShardIdx.GetLocalId()));
diff --git a/ydb/core/tx/schemeshard/schemeshard_tx_infly.h b/ydb/core/tx/schemeshard/schemeshard_tx_infly.h
index 41a8045155..02240b899b 100644
--- a/ydb/core/tx/schemeshard/schemeshard_tx_infly.h
+++ b/ydb/core/tx/schemeshard/schemeshard_tx_infly.h
@@ -237,7 +237,7 @@ struct TTxState {
THashSet<TShardIdx> ShardsInProgress; // indexes of datashards or pqs that operation waits for
THashMap<TShardIdx, std::pair<TActorId, ui32>> SchemeChangeNotificationReceived;
bool ReadyForNotifications = false;
- std::shared_ptr<NKikimrTxDataShard::TSplitMergeDescription> SplitDescription;
+ std::shared_ptr<NKikimrTxDataShard::TSplitMergeDescription> SplitDescription;
bool TxShardsListFinalized = false;
TTxId BuildIndexId;
// fields below used for backup/restore
diff --git a/ydb/core/tx/tx_proxy/read_table_impl.cpp b/ydb/core/tx/tx_proxy/read_table_impl.cpp
index 6c30975fd9..cd3cff5aba 100644
--- a/ydb/core/tx/tx_proxy/read_table_impl.cpp
+++ b/ydb/core/tx/tx_proxy/read_table_impl.cpp
@@ -2404,8 +2404,8 @@ private:
// WARNING: we must work correctly even when ResolveKeySet flip-flops
// between resolved partitions in some very unfortunate edge cases.
- TShardList oldShardList;
- ShardList.swap(oldShardList);
+ TShardList oldShardList;
+ ShardList.swap(oldShardList);
auto oldShardListIt = oldShardList.begin();
TShardState* oldShard = *oldShardListIt;
diff --git a/ydb/core/tx/tx_proxy/storage_tenant_ut.cpp b/ydb/core/tx/tx_proxy/storage_tenant_ut.cpp
index c3b8e9921a..e2c1aacc19 100644
--- a/ydb/core/tx/tx_proxy/storage_tenant_ut.cpp
+++ b/ydb/core/tx/tx_proxy/storage_tenant_ut.cpp
@@ -330,7 +330,7 @@ Y_UNIT_TEST_SUITE(TStorageTenantTest) {
void CheckThatDSProxyReturnNoGroupIfTryBlock(TTestActorRuntime* runtime,
const NKikimrHive::TEvGetTabletStorageInfoResult& storageInfo,
ui32 nodeIdx = 0) {
- TIntrusivePtr<TTabletStorageInfo> info = TabletStorageInfoFromProto(storageInfo.GetInfo());
+ TIntrusivePtr<TTabletStorageInfo> info = TabletStorageInfoFromProto(storageInfo.GetInfo());
TActorId edge = runtime->AllocateEdgeActor(nodeIdx);
IActor* x = CreateTabletReqBlockBlobStorage(edge, info.Get(), Max<ui32>(), false);
diff --git a/ydb/core/util/hazard.cpp b/ydb/core/util/hazard.cpp
index 6052c5145a..40031eac3b 100644
--- a/ydb/core/util/hazard.cpp
+++ b/ydb/core/util/hazard.cpp
@@ -62,7 +62,7 @@ THazardPointer* THazardDomain::Acquire() {
}
while (index < head->Offset) {
- // coverity[overwrite_var : FALSE]: false positive, reported to coverity
+ // coverity[overwrite_var : FALSE]: false positive, reported to coverity
head = head->Next;
Y_VERIFY(head, "Unexpected failure to find index %" PRISZT " in chunk list", index);
}
diff --git a/ydb/core/viewer/json_browse.h b/ydb/core/viewer/json_browse.h
index cba672826e..89e084a94a 100644
--- a/ydb/core/viewer/json_browse.h
+++ b/ydb/core/viewer/json_browse.h
@@ -35,8 +35,8 @@ class TJsonBrowse : public TActorBootstrapped<TJsonBrowse> {
IViewer* Viewer;
NMon::TEvHttpInfo::TPtr Event;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
- bool Recursive = false;
+ ui32 Timeout = 0;
+ bool Recursive = false;
struct TPathStateInfo {
TString Name;
diff --git a/ydb/core/viewer/json_bscontrollerinfo.h b/ydb/core/viewer/json_bscontrollerinfo.h
index 5df47ed553..ca290e30c7 100644
--- a/ydb/core/viewer/json_bscontrollerinfo.h
+++ b/ydb/core/viewer/json_bscontrollerinfo.h
@@ -20,7 +20,7 @@ class TJsonBSControllerInfo : public TViewerPipeClient<TJsonBSControllerInfo> {
NMon::TEvHttpInfo::TPtr Event;
TAutoPtr<TEvBlobStorage::TEvResponseControllerInfo> ControllerInfo;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
public:
static constexpr NKikimrServices::TActivity::EType ActorActivityType() {
diff --git a/ydb/core/viewer/json_compute.h b/ydb/core/viewer/json_compute.h
index 980b8bfc1e..c5d7728f74 100644
--- a/ydb/core/viewer/json_compute.h
+++ b/ydb/core/viewer/json_compute.h
@@ -37,7 +37,7 @@ class TJsonCompute : public TViewerPipeClient<TJsonCompute> {
TMap<TNodeId, THolder<TEvWhiteboard::TEvTabletStateResponse>> NodeTabletInfo;
THolder<TEvInterconnect::TEvNodesInfo> NodesInfo;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
TString User;
TString Path;
TPathId FilterSubDomain;
diff --git a/ydb/core/viewer/json_describe.h b/ydb/core/viewer/json_describe.h
index 05ef441f8f..13fd97bfb7 100644
--- a/ydb/core/viewer/json_describe.h
+++ b/ydb/core/viewer/json_describe.h
@@ -20,7 +20,7 @@ class TJsonDescribe : public TViewerPipeClient<TJsonDescribe> {
NMon::TEvHttpInfo::TPtr Event;
TAutoPtr<TEvSchemeShard::TEvDescribeSchemeResult> DescribeResult;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
public:
static constexpr NKikimrServices::TActivity::EType ActorActivityType() {
diff --git a/ydb/core/viewer/json_healthcheck.h b/ydb/core/viewer/json_healthcheck.h
index 2419c5b8b1..c98ac5f8b7 100644
--- a/ydb/core/viewer/json_healthcheck.h
+++ b/ydb/core/viewer/json_healthcheck.h
@@ -21,7 +21,7 @@ class TJsonHealthCheck : public TActorBootstrapped<TJsonHealthCheck> {
IViewer* Viewer;
NMon::TEvHttpInfo::TPtr Event;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
public:
static constexpr NKikimrServices::TActivity::EType ActorActivityType() {
diff --git a/ydb/core/viewer/json_hiveinfo.h b/ydb/core/viewer/json_hiveinfo.h
index f4d04ddfaf..50caf0cf45 100644
--- a/ydb/core/viewer/json_hiveinfo.h
+++ b/ydb/core/viewer/json_hiveinfo.h
@@ -20,7 +20,7 @@ class TJsonHiveInfo : public TViewerPipeClient<TJsonHiveInfo> {
NMon::TEvHttpInfo::TPtr Event;
TAutoPtr<TEvHive::TEvResponseHiveInfo> HiveInfo;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
TNodeId NodeId = 0;
public:
diff --git a/ydb/core/viewer/json_hivestats.h b/ydb/core/viewer/json_hivestats.h
index 7f24693d63..fdc5fd2103 100644
--- a/ydb/core/viewer/json_hivestats.h
+++ b/ydb/core/viewer/json_hivestats.h
@@ -20,7 +20,7 @@ class TJsonHiveStats : public TViewerPipeClient<TJsonHiveStats> {
NMon::TEvHttpInfo::TPtr Event;
TAutoPtr<TEvHive::TEvResponseHiveDomainStats> HiveStats;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
public:
static constexpr NKikimrServices::TActivity::EType ActorActivityType() {
diff --git a/ydb/core/viewer/json_hotkeys.h b/ydb/core/viewer/json_hotkeys.h
index 290e385a9b..f031d8f186 100644
--- a/ydb/core/viewer/json_hotkeys.h
+++ b/ydb/core/viewer/json_hotkeys.h
@@ -23,10 +23,10 @@ class TJsonHotkeys : public TViewerPipeClient<TJsonHotkeys> {
IViewer* Viewer;
NMon::TEvHttpInfo::TPtr Event;
TAutoPtr<TEvSchemeShard::TEvDescribeSchemeResult> DescribeResult;
- ui32 Timeout = 0;
- ui32 Limit = 0;
- float PollingFactor = 0.0;
- bool EnableSampling = false;
+ ui32 Timeout = 0;
+ ui32 Limit = 0;
+ float PollingFactor = 0.0;
+ bool EnableSampling = false;
struct KeysComparator {
bool operator ()(const std::pair<ui64, TVector<TString>>& a, const std::pair<ui64, TVector<TString>>& b) const {
diff --git a/ydb/core/viewer/json_labeledcounters.h b/ydb/core/viewer/json_labeledcounters.h
index 6fce18b32b..72ea4f8b96 100644
--- a/ydb/core/viewer/json_labeledcounters.h
+++ b/ydb/core/viewer/json_labeledcounters.h
@@ -26,7 +26,7 @@ class TJsonLabeledCounters : public TActorBootstrapped<TJsonLabeledCounters> {
TString DC;
TVector<TString> Counters;
ui32 Version = 1;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
public:
static constexpr NKikimrServices::TActivity::EType ActorActivityType() {
diff --git a/ydb/core/viewer/json_metainfo.h b/ydb/core/viewer/json_metainfo.h
index 54064d7403..69b5c0aa79 100644
--- a/ydb/core/viewer/json_metainfo.h
+++ b/ydb/core/viewer/json_metainfo.h
@@ -29,8 +29,8 @@ class TJsonMetaInfo : public TActorBootstrapped<TJsonMetaInfo> {
IViewer* Viewer;
NMon::TEvHttpInfo::TPtr Event;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
- bool Counters = false;
+ ui32 Timeout = 0;
+ bool Counters = false;
NKikimrViewer::TMetaInfo MetaInfo;
TActorId BrowseActorID;
using TBrowseRequestKey = std::tuple<TActorId, TTabletId, ui32>;
diff --git a/ydb/core/viewer/json_netinfo.h b/ydb/core/viewer/json_netinfo.h
index 3d7c3835a0..3133013892 100644
--- a/ydb/core/viewer/json_netinfo.h
+++ b/ydb/core/viewer/json_netinfo.h
@@ -35,7 +35,7 @@ class TJsonNetInfo : public TViewerPipeClient<TJsonNetInfo> {
std::unordered_map<TNodeId, std::unique_ptr<TEvWhiteboard::TEvNodeStateResponse>> NodeNetInfo;
std::unique_ptr<TEvInterconnect::TEvNodesInfo> NodesInfo;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
TString User;
TString Path;
diff --git a/ydb/core/viewer/json_nodes.h b/ydb/core/viewer/json_nodes.h
index bfc0bae0e2..2aaf9aa417 100644
--- a/ydb/core/viewer/json_nodes.h
+++ b/ydb/core/viewer/json_nodes.h
@@ -33,7 +33,7 @@ class TJsonNodes : public TViewerPipeClient<TJsonNodes> {
std::unordered_map<TString, THolder<NSchemeShard::TEvSchemeShard::TEvDescribeSchemeResult>> DescribeResult;
std::unique_ptr<TEvBlobStorage::TEvControllerConfigResponse> BaseConfig;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
TString FilterTenant;
std::vector<TNodeId> FilterNodeIds;
std::unordered_set<TNodeId> NodeIds;
@@ -262,7 +262,7 @@ public:
pDiskIndex.emplace(pDiskId, &pDiskInfo);
return pDiskInfo;
};
-
+
if (BaseConfig) {
const NKikimrBlobStorage::TEvControllerConfigResponse& pbRecord(BaseConfig->Record);
const NKikimrBlobStorage::TConfigResponse::TStatus& pbStatus(pbRecord.GetResponse().GetStatus(0));
@@ -318,7 +318,7 @@ public:
}
}
}
-
+
TStringStream json;
TProtoToJson::ProtoToJson(json, nodesInfo, JsonSettings);
Send(Initiator, new NMon::TEvHttpInfoRes(Viewer->GetHTTPOKJSON() + json.Str(), 0, NMon::IEvHttpInfoRes::EContentType::Custom));
diff --git a/ydb/core/viewer/json_pqconsumerinfo.h b/ydb/core/viewer/json_pqconsumerinfo.h
index b98dfc2632..4d2c468a9c 100644
--- a/ydb/core/viewer/json_pqconsumerinfo.h
+++ b/ydb/core/viewer/json_pqconsumerinfo.h
@@ -23,8 +23,8 @@ class TJsonPQConsumerInfo : public TActorBootstrapped<TJsonPQConsumerInfo> {
TString Topic;
TString Client;
TString DC;
- ui32 Version = 0;
- ui32 Timeout = 0;
+ ui32 Version = 0;
+ ui32 Timeout = 0;
ui32 Requests = 0;
ui32 Responses = 0;
diff --git a/ydb/core/viewer/json_query.h b/ydb/core/viewer/json_query.h
index 600d8088e1..a7d88c1776 100644
--- a/ydb/core/viewer/json_query.h
+++ b/ydb/core/viewer/json_query.h
@@ -26,7 +26,7 @@ class TJsonQuery : public TActorBootstrapped<TJsonQuery> {
TJsonSettings JsonSettings;
TActorId Initiator;
NMon::TEvHttpInfo::TPtr Event;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
TVector<Ydb::ResultSet> ResultSets;
TString Action;
TString Stats;
diff --git a/ydb/core/viewer/json_storage.h b/ydb/core/viewer/json_storage.h
index 76e5d2f5e8..05590e337d 100644
--- a/ydb/core/viewer/json_storage.h
+++ b/ydb/core/viewer/json_storage.h
@@ -43,7 +43,7 @@ class TJsonStorage : public TViewerPipeClient<TJsonStorage> {
THashMap<TString, TStoragePoolInfo> StoragePoolInfo;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
TString FilterTenant;
THashSet<TString> FilterStoragePools;
TVector<TString> FilterGroupIds;
diff --git a/ydb/core/viewer/json_tabletcounters.h b/ydb/core/viewer/json_tabletcounters.h
index 7f39910441..056c33bb0b 100644
--- a/ydb/core/viewer/json_tabletcounters.h
+++ b/ydb/core/viewer/json_tabletcounters.h
@@ -25,8 +25,8 @@ class TJsonTabletCounters : public TActorBootstrapped<TJsonTabletCounters> {
TMap<TTabletId, THolder<TEvTablet::TEvGetCountersResponse>> Results;
THolder<NSchemeShard::TEvSchemeShard::TEvDescribeSchemeResult> DescribeResult;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
- bool Aggregate = false;
+ ui32 Timeout = 0;
+ bool Aggregate = false;
public:
static constexpr NKikimrServices::TActivity::EType ActorActivityType() {
diff --git a/ydb/core/viewer/json_tenantinfo.h b/ydb/core/viewer/json_tenantinfo.h
index 749422ba39..08bdab32c9 100644
--- a/ydb/core/viewer/json_tenantinfo.h
+++ b/ydb/core/viewer/json_tenantinfo.h
@@ -26,7 +26,7 @@ class TJsonTenantInfo : public TViewerPipeClient<TJsonTenantInfo> {
IViewer* Viewer;
THashMap<TString, NKikimrViewer::TTenant> TenantByPath;
THashMap<TPathId, NKikimrViewer::TTenant> TenantBySubDomainKey;
- THashMap<TString, THolder<NSchemeCache::TSchemeCacheNavigate>> NavigateResult;
+ THashMap<TString, THolder<NSchemeCache::TSchemeCacheNavigate>> NavigateResult;
THashMap<TTabletId, THolder<TEvHive::TEvResponseHiveDomainStats>> HiveDomainStats;
THashMap<TTabletId, THolder<TEvHive::TEvResponseHiveStorageStats>> HiveStorageStats;
NMon::TEvHttpInfo::TPtr Event;
@@ -34,7 +34,7 @@ class TJsonTenantInfo : public TViewerPipeClient<TJsonTenantInfo> {
TMap<TNodeId, THolder<TEvWhiteboard::TEvSystemStateResponse>> NodeSysInfo;
TMap<TNodeId, THolder<TEvWhiteboard::TEvTabletStateResponse>> NodeTabletInfo;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
TString User;
TString Path;
bool Tablets = false;
@@ -325,7 +325,7 @@ public:
tenant.MergeFrom(tenantBySubDomainKey);
if (!tenant.GetId()) {
tenant.SetId(GetDomainId(subDomainKey));
- }
+ }
if (tenant.GetType() == NKikimrViewer::UnknownTenantType) {
tenant.SetType(NKikimrViewer::Dedicated);
}
@@ -402,7 +402,7 @@ public:
overall = Max(overall, flag);
}
}
-
+
THashSet<TNodeId> tenantNodes;
for (TNodeId nodeId : tenant.GetNodeIds()) {
diff --git a/ydb/core/viewer/json_tenants.h b/ydb/core/viewer/json_tenants.h
index 762d5e3b43..548232e4a6 100644
--- a/ydb/core/viewer/json_tenants.h
+++ b/ydb/core/viewer/json_tenants.h
@@ -21,7 +21,7 @@ class TJsonTenants : public TViewerPipeClient<TJsonTenants> {
NKikimrViewer::TTenants Result;
NMon::TEvHttpInfo::TPtr Event;
TJsonSettings JsonSettings;
- ui32 Timeout = 0;
+ ui32 Timeout = 0;
bool State = true;
THashMap<TString, NKikimrViewer::TTenant*> TenantIndex;
diff --git a/ydb/core/viewer/json_topicinfo.h b/ydb/core/viewer/json_topicinfo.h
index cbf42ee727..c7a9b82edb 100644
--- a/ydb/core/viewer/json_topicinfo.h
+++ b/ydb/core/viewer/json_topicinfo.h
@@ -21,8 +21,8 @@ class TJsonTopicInfo : public TActorBootstrapped<TJsonTopicInfo> {
TString Topic;
TString Client;
TString GroupNames;
- bool ShowAll = false;
- ui32 Timeout = 0;
+ bool ShowAll = false;
+ ui32 Timeout = 0;
public:
static constexpr NKikimrServices::TActivity::EType ActorActivityType() {
diff --git a/ydb/core/viewer/json_wb_req.h b/ydb/core/viewer/json_wb_req.h
index f04c85688f..678ac3e23c 100644
--- a/ydb/core/viewer/json_wb_req.h
+++ b/ydb/core/viewer/json_wb_req.h
@@ -53,9 +53,9 @@ protected:
TString FilterFields;
TString MergeFields;
TJsonSettings JsonSettings;
- bool AllEnums = false;
- ui32 Timeout = 0;
- ui32 Retries = 0;
+ bool AllEnums = false;
+ ui32 Timeout = 0;
+ ui32 Retries = 0;
std::unordered_map<TNodeId, ui32> NodeRetries;
bool StaticNodesOnly = TWhiteboardInfo<ResponseType>::StaticNodesOnly;
TDuration RetryPeriod = TDuration::MilliSeconds(500);
diff --git a/ydb/core/viewer/protos/viewer.proto b/ydb/core/viewer/protos/viewer.proto
index 9f6c822a89..c138c59f82 100644
--- a/ydb/core/viewer/protos/viewer.proto
+++ b/ydb/core/viewer/protos/viewer.proto
@@ -1,5 +1,5 @@
syntax = "proto3";
-
+
import "ydb/core/protos/tablet_counters.proto";
import "ydb/core/protos/node_whiteboard.proto";
import "ydb/core/protos/flat_scheme_op.proto";
diff --git a/ydb/core/yq/libs/actors/clusters_from_connections.cpp b/ydb/core/yq/libs/actors/clusters_from_connections.cpp
index 93e0471892..c9dfd08387 100644
--- a/ydb/core/yq/libs/actors/clusters_from_connections.cpp
+++ b/ydb/core/yq/libs/actors/clusters_from_connections.cpp
@@ -1,138 +1,138 @@
-#include "clusters_from_connections.h"
-
+#include "clusters_from_connections.h"
+
#include <ydb/library/yql/providers/common/provider/yql_provider_names.h>
-
-#include <util/generic/hash.h>
-#include <util/string/builder.h>
-#include <util/system/env.h>
-
+
+#include <util/generic/hash.h>
+#include <util/string/builder.h>
+#include <util/system/env.h>
+
namespace NYq {
-
+
using namespace NYql;
-namespace {
-
-template <typename TClusterConfig>
-void FillClusterAuth(TClusterConfig& clusterCfg, const YandexQuery::IamAuth& auth, const TString& authToken, const THashMap<TString, TString>& accountIdSignatures) {
- switch (auth.identity_case()) {
- case YandexQuery::IamAuth::kNone:
- break;
- case YandexQuery::IamAuth::kCurrentIam:
- clusterCfg.SetToken(authToken);
- break;
- case YandexQuery::IamAuth::kServiceAccount:
- clusterCfg.SetServiceAccountId(auth.service_account().id());
- clusterCfg.SetServiceAccountIdSignature(accountIdSignatures.at(auth.service_account().id()));
- break;
- // Do not replace with default. Adding a new auth item should cause a compilation error
- case YandexQuery::IamAuth::IDENTITY_NOT_SET:
- break;
- }
-}
-
+namespace {
+
+template <typename TClusterConfig>
+void FillClusterAuth(TClusterConfig& clusterCfg, const YandexQuery::IamAuth& auth, const TString& authToken, const THashMap<TString, TString>& accountIdSignatures) {
+ switch (auth.identity_case()) {
+ case YandexQuery::IamAuth::kNone:
+ break;
+ case YandexQuery::IamAuth::kCurrentIam:
+ clusterCfg.SetToken(authToken);
+ break;
+ case YandexQuery::IamAuth::kServiceAccount:
+ clusterCfg.SetServiceAccountId(auth.service_account().id());
+ clusterCfg.SetServiceAccountIdSignature(accountIdSignatures.at(auth.service_account().id()));
+ break;
+ // Do not replace with default. Adding a new auth item should cause a compilation error
+ case YandexQuery::IamAuth::IDENTITY_NOT_SET:
+ break;
+ }
+}
+
} //namespace
-void AddClustersFromConnections(const THashMap<TString, YandexQuery::Connection>& connections,
- bool useBearerForYdb,
- const TString& objectStorageEndpoint,
- const TString& authToken,
- const THashMap<TString, TString>& accountIdSignatures,
- TGatewaysConfig& gatewaysConfig,
- THashMap<TString, TString>& clusters) {
- for (const auto&[_, conn] : connections) {
- auto connectionName = conn.content().name();
- switch (conn.content().setting().connection_case()) {
- case YandexQuery::ConnectionSetting::kYdbDatabase: {
- const auto& db = conn.content().setting().ydb_database();
- auto* clusterCfg = gatewaysConfig.MutableYdb()->AddClusterMapping();
- clusterCfg->SetName(connectionName);
- clusterCfg->SetId(db.database_id());
+void AddClustersFromConnections(const THashMap<TString, YandexQuery::Connection>& connections,
+ bool useBearerForYdb,
+ const TString& objectStorageEndpoint,
+ const TString& authToken,
+ const THashMap<TString, TString>& accountIdSignatures,
+ TGatewaysConfig& gatewaysConfig,
+ THashMap<TString, TString>& clusters) {
+ for (const auto&[_, conn] : connections) {
+ auto connectionName = conn.content().name();
+ switch (conn.content().setting().connection_case()) {
+ case YandexQuery::ConnectionSetting::kYdbDatabase: {
+ const auto& db = conn.content().setting().ydb_database();
+ auto* clusterCfg = gatewaysConfig.MutableYdb()->AddClusterMapping();
+ clusterCfg->SetName(connectionName);
+ clusterCfg->SetId(db.database_id());
if (db.database())
clusterCfg->SetDatabase(db.database());
if (db.endpoint())
clusterCfg->SetEndpoint(db.endpoint());
- clusterCfg->SetSecure(db.secure());
- clusterCfg->SetAddBearerToToken(useBearerForYdb);
- FillClusterAuth(*clusterCfg, db.auth(), authToken, accountIdSignatures);
- clusters.emplace(connectionName, YdbProviderName);
- break;
- }
- case YandexQuery::ConnectionSetting::kClickhouseCluster: {
- const auto& ch = conn.content().setting().clickhouse_cluster();
- auto* clusterCfg = gatewaysConfig.MutableClickHouse()->AddClusterMapping();
- clusterCfg->SetName(connectionName);
+ clusterCfg->SetSecure(db.secure());
+ clusterCfg->SetAddBearerToToken(useBearerForYdb);
+ FillClusterAuth(*clusterCfg, db.auth(), authToken, accountIdSignatures);
+ clusters.emplace(connectionName, YdbProviderName);
+ break;
+ }
+ case YandexQuery::ConnectionSetting::kClickhouseCluster: {
+ const auto& ch = conn.content().setting().clickhouse_cluster();
+ auto* clusterCfg = gatewaysConfig.MutableClickHouse()->AddClusterMapping();
+ clusterCfg->SetName(connectionName);
clusterCfg->SetId(ch.database_id());
if (ch.host())
clusterCfg->SetCluster(ch.host());
clusterCfg->SetNativeHostPort(9440);
clusterCfg->SetNativeSecure(true);
- clusterCfg->SetCHToken(TStringBuilder() << "basic#" << ch.login() << "#" << ch.password());
- clusters.emplace(connectionName, ClickHouseProviderName);
- break;
- }
- case YandexQuery::ConnectionSetting::kObjectStorage: {
- const auto& s3 = conn.content().setting().object_storage();
- auto* clusterCfg = gatewaysConfig.MutableS3()->AddClusterMapping();
- clusterCfg->SetName(connectionName);
- TString objectStorageUrl;
- if (objectStorageEndpoint == "https://s3.mds.yandex.net") {
- objectStorageUrl = TStringBuilder() << "https://" << s3.bucket() << ".s3.mds.yandex.net/";
- } else {
- objectStorageUrl = TStringBuilder() << objectStorageEndpoint << '/' << s3.bucket() << '/';
- }
- clusterCfg->SetUrl(objectStorageUrl);
- FillClusterAuth(*clusterCfg, s3.auth(), authToken, accountIdSignatures);
- clusters.emplace(connectionName, S3ProviderName);
- break;
- }
- case YandexQuery::ConnectionSetting::kDataStreams: {
- const auto& ds = conn.content().setting().data_streams();
- auto* clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName(connectionName);
+ clusterCfg->SetCHToken(TStringBuilder() << "basic#" << ch.login() << "#" << ch.password());
+ clusters.emplace(connectionName, ClickHouseProviderName);
+ break;
+ }
+ case YandexQuery::ConnectionSetting::kObjectStorage: {
+ const auto& s3 = conn.content().setting().object_storage();
+ auto* clusterCfg = gatewaysConfig.MutableS3()->AddClusterMapping();
+ clusterCfg->SetName(connectionName);
+ TString objectStorageUrl;
+ if (objectStorageEndpoint == "https://s3.mds.yandex.net") {
+ objectStorageUrl = TStringBuilder() << "https://" << s3.bucket() << ".s3.mds.yandex.net/";
+ } else {
+ objectStorageUrl = TStringBuilder() << objectStorageEndpoint << '/' << s3.bucket() << '/';
+ }
+ clusterCfg->SetUrl(objectStorageUrl);
+ FillClusterAuth(*clusterCfg, s3.auth(), authToken, accountIdSignatures);
+ clusters.emplace(connectionName, S3ProviderName);
+ break;
+ }
+ case YandexQuery::ConnectionSetting::kDataStreams: {
+ const auto& ds = conn.content().setting().data_streams();
+ auto* clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName(connectionName);
if (ds.endpoint())
clusterCfg->SetEndpoint(ds.endpoint());
- clusterCfg->SetDatabase(ds.database());
+ clusterCfg->SetDatabase(ds.database());
clusterCfg->SetDatabaseId(ds.database_id());
- clusterCfg->SetUseSsl(ds.secure());
- clusterCfg->SetAddBearerToToken(useBearerForYdb);
- clusterCfg->SetClusterType(TPqClusterConfig::CT_DATA_STREAMS);
- FillClusterAuth(*clusterCfg, ds.auth(), authToken, accountIdSignatures);
- clusters.emplace(connectionName, PqProviderName);
- break;
- }
- case YandexQuery::ConnectionSetting::kMonitoring: {
- const auto& monitoring = conn.content().setting().monitoring();
- auto* clusterCfg = gatewaysConfig.MutableSolomon()->AddClusterMapping();
- clusterCfg->SetName(connectionName);
-
- // TODO: move Endpoint to yq config
- auto solomonEndpointForTest = GetEnv("SOLOMON_ENDPOINT");
- auto solomonEndpoint = solomonEndpointForTest ? TString(solomonEndpointForTest) : TString();
- if (solomonEndpoint.empty()) {
- if (connectionName.StartsWith("pre")) {
- solomonEndpoint = "monitoring.api.cloud-preprod.yandex.net";
+ clusterCfg->SetUseSsl(ds.secure());
+ clusterCfg->SetAddBearerToToken(useBearerForYdb);
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_DATA_STREAMS);
+ FillClusterAuth(*clusterCfg, ds.auth(), authToken, accountIdSignatures);
+ clusters.emplace(connectionName, PqProviderName);
+ break;
+ }
+ case YandexQuery::ConnectionSetting::kMonitoring: {
+ const auto& monitoring = conn.content().setting().monitoring();
+ auto* clusterCfg = gatewaysConfig.MutableSolomon()->AddClusterMapping();
+ clusterCfg->SetName(connectionName);
+
+ // TODO: move Endpoint to yq config
+ auto solomonEndpointForTest = GetEnv("SOLOMON_ENDPOINT");
+ auto solomonEndpoint = solomonEndpointForTest ? TString(solomonEndpointForTest) : TString();
+ if (solomonEndpoint.empty()) {
+ if (connectionName.StartsWith("pre")) {
+ solomonEndpoint = "monitoring.api.cloud-preprod.yandex.net";
clusterCfg->SetUseSsl(true);
- } else if (connectionName.StartsWith("so")) {
- solomonEndpoint = "solomon.yandex.net";
- } else {
- solomonEndpoint = "monitoring.api.cloud.yandex.net";
+ } else if (connectionName.StartsWith("so")) {
+ solomonEndpoint = "solomon.yandex.net";
+ } else {
+ solomonEndpoint = "monitoring.api.cloud.yandex.net";
clusterCfg->SetUseSsl(true);
- }
- }
-
- clusterCfg->SetCluster(solomonEndpoint);
- clusterCfg->SetClusterType(TSolomonClusterConfig::SCT_MONITORING);
- clusterCfg->MutablePath()->SetProject(monitoring.project());
- clusterCfg->MutablePath()->SetCluster(monitoring.cluster());
- FillClusterAuth(*clusterCfg, monitoring.auth(), authToken, accountIdSignatures);
- clusters.emplace(connectionName, SolomonProviderName);
- break;
- }
-
- // Do not replace with default. Adding a new connection should cause a compilation error
- case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
- break;
- }
- }
-}
+ }
+ }
+
+ clusterCfg->SetCluster(solomonEndpoint);
+ clusterCfg->SetClusterType(TSolomonClusterConfig::SCT_MONITORING);
+ clusterCfg->MutablePath()->SetProject(monitoring.project());
+ clusterCfg->MutablePath()->SetCluster(monitoring.cluster());
+ FillClusterAuth(*clusterCfg, monitoring.auth(), authToken, accountIdSignatures);
+ clusters.emplace(connectionName, SolomonProviderName);
+ break;
+ }
+
+ // Do not replace with default. Adding a new connection should cause a compilation error
+ case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
+ break;
+ }
+ }
+}
} //NYq
diff --git a/ydb/core/yq/libs/actors/clusters_from_connections.h b/ydb/core/yq/libs/actors/clusters_from_connections.h
index 08db9704ea..fafbd35e03 100644
--- a/ydb/core/yq/libs/actors/clusters_from_connections.h
+++ b/ydb/core/yq/libs/actors/clusters_from_connections.h
@@ -1,16 +1,16 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/providers/common/proto/gateways_config.pb.h>
#include <ydb/public/api/protos/yq.pb.h>
-
+
namespace NYq {
-void AddClustersFromConnections(const THashMap<TString, YandexQuery::Connection>& connections,
- bool useBearerForYdb,
- const TString& objectStorageEndpoint,
- const TString& authToken,
- const THashMap<TString, TString>& accountIdSignatures,
+void AddClustersFromConnections(const THashMap<TString, YandexQuery::Connection>& connections,
+ bool useBearerForYdb,
+ const TString& objectStorageEndpoint,
+ const TString& authToken,
+ const THashMap<TString, TString>& accountIdSignatures,
NYql::TGatewaysConfig& gatewaysConfig,
- THashMap<TString, TString>& clusters);
+ THashMap<TString, TString>& clusters);
} //NYq
diff --git a/ydb/core/yq/libs/actors/database_resolver.cpp b/ydb/core/yq/libs/actors/database_resolver.cpp
index c784d80c00..34887a78fb 100644
--- a/ydb/core/yq/libs/actors/database_resolver.cpp
+++ b/ydb/core/yq/libs/actors/database_resolver.cpp
@@ -39,8 +39,8 @@ public:
TResponseProcessor(
const TActorId sender,
TCache& cache,
- const THashMap<std::pair<TString, DatabaseType>, TEndpoint>& ready,
- const THashMap<NHttp::THttpOutgoingRequestPtr, std::tuple<TString, DatabaseType, TEvents::TDatabaseAuth>>& requests,
+ const THashMap<std::pair<TString, DatabaseType>, TEndpoint>& ready,
+ const THashMap<NHttp::THttpOutgoingRequestPtr, std::tuple<TString, DatabaseType, TEvents::TDatabaseAuth>>& requests,
const TString& traceId,
bool mdbTransformHost,
const TParsers& parsers)
@@ -106,8 +106,8 @@ private:
TString status;
TString errorMessage;
TString databaseId;
- DatabaseType databaseType = DatabaseType::Ydb;
- TEvents::TDatabaseAuth info;
+ DatabaseType databaseType = DatabaseType::Ydb;
+ TEvents::TDatabaseAuth info;
TMaybe<TEndpoint> result;
HandledIds++;
if (ev->Get()->Error.empty() && (ev->Get()->Response && ((status = ev->Get()->Response->Status) == "200"))) {
@@ -119,26 +119,26 @@ private:
if (it == Requests.end()) {
errorMessage = "Unknown databaseId";
} else {
- std::tie(databaseId, databaseType, info) = it->second;
- const bool parseJsonOk = NJson::ReadJsonTree(ev->Get()->Response->Body, &jsonConfig, &databaseInfo);
- TParsers::const_iterator parserIt;
- if (parseJsonOk && (parserIt = Parsers.find(databaseType)) != Parsers.end()) {
+ std::tie(databaseId, databaseType, info) = it->second;
+ const bool parseJsonOk = NJson::ReadJsonTree(ev->Get()->Response->Body, &jsonConfig, &databaseInfo);
+ TParsers::const_iterator parserIt;
+ if (parseJsonOk && (parserIt = Parsers.find(databaseType)) != Parsers.end()) {
try {
- auto res = parserIt->second(databaseInfo, MdbTransformHost);
+ auto res = parserIt->second(databaseInfo, MdbTransformHost);
LOG_D("Got " << databaseId << " " << databaseType << " endpoint " << res.Endpoint << " " << res.Database);
- DatabaseId2Endpoint[std::make_pair(databaseId, databaseType)] = res;
+ DatabaseId2Endpoint[std::make_pair(databaseId, databaseType)] = res;
result.ConstructInPlace(res);
} catch (...) {
errorMessage = TStringBuilder()
<< " Couldn't resolve "
- << databaseType << " Id: "
+ << databaseType << " Id: "
<< databaseId << "\n"
<< CurrentExceptionMessage();
}
} else {
errorMessage = TStringBuilder() << "Unable to parse database information."
<< "Database Id: " << databaseId
- << ", Database Type: " << databaseType;
+ << ", Database Type: " << databaseType;
}
}
} else {
@@ -152,17 +152,17 @@ private:
if (errorMessage) {
LOG_E("Error on response parsing: " << errorMessage);
- Success = false;
+ Success = false;
}
- if (databaseId) {
- auto key = std::make_tuple(databaseId, databaseType, info);
+ if (databaseId) {
+ auto key = std::make_tuple(databaseId, databaseType, info);
if (errorMessage) {
Cache.Put(key, errorMessage);
} else {
Cache.Put(key, result);
}
- }
+ }
if (HandledIds == Requests.size()) {
SendResolvedEndpointsAndDie();
@@ -171,15 +171,15 @@ private:
LOG_D(DatabaseId2Endpoint.size() << " of " << Requests.size() << " done");
}
-private:
+private:
const TActorId Sender;
TCache& Cache;
- const THashMap<NHttp::THttpOutgoingRequestPtr, std::tuple<TString, DatabaseType, TEvents::TDatabaseAuth>> Requests;
+ const THashMap<NHttp::THttpOutgoingRequestPtr, std::tuple<TString, DatabaseType, TEvents::TDatabaseAuth>> Requests;
const TString TraceId;
const bool MdbTransformHost;
- THashMap<std::pair<TString, DatabaseType>, TEvents::TEvEndpointResponse::TEndpoint> DatabaseId2Endpoint;
+ THashMap<std::pair<TString, DatabaseType>, TEvents::TEvEndpointResponse::TEndpoint> DatabaseId2Endpoint;
size_t HandledIds = 0;
- bool Success = true;
+ bool Success = true;
const TParsers& Parsers;
TDuration ResolvingTtl = TDuration::Seconds(30); //TODO: Use cfg
};
@@ -187,10 +187,10 @@ private:
class TDatabaseResolver: public TActor<TDatabaseResolver>
{
public:
- TDatabaseResolver(TActorId httpProxy, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory)
+ TDatabaseResolver(TActorId httpProxy, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory)
: TActor<TDatabaseResolver>(&TDatabaseResolver::State)
, HttpProxy(httpProxy)
- , CredentialsFactory(credentialsFactory)
+ , CredentialsFactory(credentialsFactory)
, Cache(
TTtlCacheSettings()
.SetTtl(TDuration::Minutes(10))
@@ -199,7 +199,7 @@ public:
{
auto ydbParser = [](NJson::TJsonValue& databaseInfo, bool) {
bool secure = false;
- TString endpoint = databaseInfo.GetMap().at("endpoint").GetStringRobust();
+ TString endpoint = databaseInfo.GetMap().at("endpoint").GetStringRobust();
TString prefix("/?database=");
TString database;
auto pos = endpoint.rfind(prefix);
@@ -215,7 +215,7 @@ public:
endpoint = endpoint.substr(pos+3);
}
- Y_ENSURE(endpoint);
+ Y_ENSURE(endpoint);
return TEvents::TEvEndpointResponse::TEndpoint{endpoint, database, secure};
};
Parsers[DatabaseType::Ydb] = ydbParser;
@@ -232,7 +232,7 @@ public:
Parsers[DatabaseType::ClickHouse] = [](NJson::TJsonValue& databaseInfo, bool mdbTransformHost) {
TString endpoint;
TVector<TString> aliveHosts;
- for (const auto& host : databaseInfo.GetMap().at("hosts").GetArraySafe()) {
+ for (const auto& host : databaseInfo.GetMap().at("hosts").GetArraySafe()) {
if (host["health"].GetString() == "ALIVE" && host["type"].GetString() == "CLICKHOUSE") {
aliveHosts.push_back(host["name"].GetString());
}
@@ -260,12 +260,12 @@ private:
{
TraceId = ev->Get()->TraceId;
LOG_D("Start databaseId resolver for " << ev->Get()->DatabaseIds.size() << " ids");
- THashMap<NHttp::THttpOutgoingRequestPtr, std::tuple<TString, DatabaseType, TEvents::TDatabaseAuth>> requests; // request, (dbId, type, info)
- THashMap<std::pair<TString, DatabaseType>, TEndpoint> ready;
- for (const auto& [p, info] : ev->Get()->DatabaseIds) {
- const auto& [databaseId, type] = p;
+ THashMap<NHttp::THttpOutgoingRequestPtr, std::tuple<TString, DatabaseType, TEvents::TDatabaseAuth>> requests; // request, (dbId, type, info)
+ THashMap<std::pair<TString, DatabaseType>, TEndpoint> ready;
+ for (const auto& [p, info] : ev->Get()->DatabaseIds) {
+ const auto& [databaseId, type] = p;
TMaybe<std::variant<TEndpoint, TString>> endpoint;
- auto key = std::make_tuple(databaseId, type, info);
+ auto key = std::make_tuple(databaseId, type, info);
if (Cache.Get(key, &endpoint)) {
if (endpoint) {
ready.insert(std::make_pair(p,
@@ -275,25 +275,25 @@ private:
continue;
}
- try {
- TString url = IsIn({ DatabaseType::Ydb, DatabaseType::DataStreams }, type) ?
- ev->Get()->YdbMvpEndpoint + "/database?databaseId=" + databaseId :
- ev->Get()->MdbGateway + "/managed-clickhouse/v1/clusters/" + databaseId + "/hosts";
- LOG_D("Get '" << url << "'");
-
- NHttp::THttpOutgoingRequestPtr httpRequest = NHttp::THttpOutgoingRequest::CreateRequestGet(url);
-
- auto credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(CredentialsFactory, info.StructuredToken, info.AddBearerToToken);
- auto token = credentialsProviderFactory->CreateProvider()->GetAuthInfo();
- if (token) {
- httpRequest->Set("Authorization", token);
- }
-
- requests[httpRequest] = key;
- } catch (const std::exception& e) {
+ try {
+ TString url = IsIn({ DatabaseType::Ydb, DatabaseType::DataStreams }, type) ?
+ ev->Get()->YdbMvpEndpoint + "/database?databaseId=" + databaseId :
+ ev->Get()->MdbGateway + "/managed-clickhouse/v1/clusters/" + databaseId + "/hosts";
+ LOG_D("Get '" << url << "'");
+
+ NHttp::THttpOutgoingRequestPtr httpRequest = NHttp::THttpOutgoingRequest::CreateRequestGet(url);
+
+ auto credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(CredentialsFactory, info.StructuredToken, info.AddBearerToToken);
+ auto token = credentialsProviderFactory->CreateProvider()->GetAuthInfo();
+ if (token) {
+ httpRequest->Set("Authorization", token);
+ }
+
+ requests[httpRequest] = key;
+ } catch (const std::exception& e) {
const TString msg = TStringBuilder() << " Error while preparing to resolve databaseId " << databaseId << ", details: " << e.what();
- LOG_E(msg);
- Cache.Put(key, endpoint);
+ LOG_E(msg);
+ Cache.Put(key, endpoint);
}
}
@@ -305,20 +305,20 @@ private:
ctx.Send(new IEventHandle(HttpProxy, helper, new NHttp::TEvHttpProxy::TEvHttpOutgoingRequest(request)));
}
} else {
- Send(ev->Sender, new TEvents::TEvEndpointResponse(std::move(ready), /*success=*/true));
+ Send(ev->Sender, new TEvents::TEvEndpointResponse(std::move(ready), /*success=*/true));
}
}
-private:
+private:
TParsers Parsers;
const TActorId HttpProxy;
- const ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
+ const ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
TString TraceId;
TCache Cache;
};
-NActors::IActor* CreateDatabaseResolver(NActors::TActorId httpProxy, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory) {
- return new TDatabaseResolver(httpProxy, credentialsFactory);
+NActors::IActor* CreateDatabaseResolver(NActors::TActorId httpProxy, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory) {
+ return new TDatabaseResolver(httpProxy, credentialsFactory);
}
} /* namespace NYq */
diff --git a/ydb/core/yq/libs/actors/pending_fetcher.cpp b/ydb/core/yq/libs/actors/pending_fetcher.cpp
index 0095963c8f..f1394e4152 100644
--- a/ydb/core/yq/libs/actors/pending_fetcher.cpp
+++ b/ydb/core/yq/libs/actors/pending_fetcher.cpp
@@ -122,7 +122,7 @@ public:
, RandomProvider(randomProvider)
, DqCompFactory(dqCompFactory)
, ServiceCounters(serviceCounters, "pending_fetcher")
- , CredentialsFactory(credentialsFactory)
+ , CredentialsFactory(credentialsFactory)
, S3Gateway(s3Gateway)
, PqCmConnections(std::move(pqCmConnections))
, Guid(CreateGuidAsString())
@@ -150,7 +150,7 @@ public:
Y_UNUSED(ctx);
- DatabaseResolver = Register(CreateDatabaseResolver(MakeYqlAnalyticsHttpProxyId(), CredentialsFactory));
+ DatabaseResolver = Register(CreateDatabaseResolver(MakeYqlAnalyticsHttpProxyId(), CredentialsFactory));
Send(SelfId(), new NActors::TEvents::TEvWakeup());
LOG_I("STARTED");
@@ -182,10 +182,10 @@ private:
}
const auto& res = ev->Get()->Result;
-
+
LOG_D("Tasks count: " << res.tasks().size());
if (!res.tasks().empty()) {
- ProcessTask(res);
+ ProcessTask(res);
HasRunningRequest = true;
GetPendingTask();
}
@@ -245,8 +245,8 @@ private:
task.user_id(), Guid, task.generation(),
VectorFromProto(task.connection()),
VectorFromProto(task.binding()),
- CredentialsFactory,
- serviceAccounts,
+ CredentialsFactory,
+ serviceAccounts,
task.query_type(),
task.execute_mode(),
GetEntityIdAsString(CommonConfig.GetIdsPrefix(), EEntityType::RESULT),
@@ -263,7 +263,7 @@ private:
NProtoInterop::CastFromProto(task.deadline()),
ClientCounters);
- NDq::SetYqlLogLevels(NActors::NLog::PRI_TRACE);
+ NDq::SetYqlLogLevels(NActors::NLog::PRI_TRACE);
Register(CreateRunActor(ServiceCounters, std::move(params)));
}
@@ -296,7 +296,7 @@ private:
TActorId DatabaseResolver;
- ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
+ ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
const IHTTPGateway::TPtr S3Gateway;
const ::NPq::NConfigurationManager::IConnections::TPtr PqCmConnections;
diff --git a/ydb/core/yq/libs/actors/proxy.h b/ydb/core/yq/libs/actors/proxy.h
index 442d29ac44..46c34f66e8 100644
--- a/ydb/core/yq/libs/actors/proxy.h
+++ b/ydb/core/yq/libs/actors/proxy.h
@@ -53,7 +53,7 @@ NActors::IActor* CreatePendingFetcher(
NActors::IActor* CreateRunActor(
const ::NYq::NCommon::TServiceCounters& serviceCounters,
- TRunActorParams&& params
+ TRunActorParams&& params
);
struct TResultId {
diff --git a/ydb/core/yq/libs/actors/result_writer.cpp b/ydb/core/yq/libs/actors/result_writer.cpp
index d51b8aae9f..0cf70c0028 100644
--- a/ydb/core/yq/libs/actors/result_writer.cpp
+++ b/ydb/core/yq/libs/actors/result_writer.cpp
@@ -46,7 +46,7 @@ public:
const TInstant& deadline,
const NMonitoring::TDynamicCounterPtr& clientCounters)
: ExecuterId(executerId)
- , ResultBuilder(MakeHolder<TProtoBuilder>(resultType, columns))
+ , ResultBuilder(MakeHolder<TProtoBuilder>(resultType, columns))
, ResultId({resultId})
, TraceId(traceId)
, Deadline(deadline)
@@ -108,7 +108,7 @@ private:
Finished = true;
NYql::NDqProto::TQueryResponse queryResult(ev->Get()->Record);
- *queryResult.MutableYson() = ResultBuilder->BuildYson(Head);
+ *queryResult.MutableYson() = ResultBuilder->BuildYson(Head);
if (!Issues.Empty()) {
IssuesToMessage(Issues, queryResult.MutableIssues());
}
@@ -240,7 +240,7 @@ private:
void ProcessData(NDq::TEvDqCompute::TEvChannelData::TPtr& ev) {
auto& data = ev->Get()->Record.GetChannelData().GetData();
- auto resultSet = ResultBuilder->BuildResultSet({data});
+ auto resultSet = ResultBuilder->BuildResultSet({data});
FreeSpace -= data.GetRaw().size();
OccupiedSpace += data.GetRaw().size();
diff --git a/ydb/core/yq/libs/actors/run_actor.cpp b/ydb/core/yq/libs/actors/run_actor.cpp
index 5549f8f254..18d6555bbd 100644
--- a/ydb/core/yq/libs/actors/run_actor.cpp
+++ b/ydb/core/yq/libs/actors/run_actor.cpp
@@ -1,7 +1,7 @@
#include "proxy.h"
-#include "clusters_from_connections.h"
-#include "system_clusters.h"
-#include "table_bindings_from_bindings.h"
+#include "clusters_from_connections.h"
+#include "system_clusters.h"
+#include "table_bindings_from_bindings.h"
#include <ydb/library/yql/ast/yql_expr.h>
#include <ydb/library/yql/dq/actors/compute/dq_checkpoints.h>
@@ -53,8 +53,8 @@
#include <ydb/core/yq/libs/common/entity_id.h>
#include <ydb/core/yq/libs/actors/nodes_manager.h>
#include <ydb/core/yq/libs/gateway/empty_gateway.h>
-#include <ydb/core/yq/libs/read_rule/read_rule_creator.h>
-#include <ydb/core/yq/libs/read_rule/read_rule_deleter.h>
+#include <ydb/core/yq/libs/read_rule/read_rule_creator.h>
+#include <ydb/core/yq/libs/read_rule/read_rule_deleter.h>
#include <ydb/core/yq/libs/tasks_packer/tasks_packer.h>
#include <util/system/hostname.h>
@@ -82,7 +82,7 @@ namespace NYq {
using namespace NActors;
using namespace NYql;
-using namespace NDqs;
+using namespace NDqs;
class TDeferredCountersCleanupActor : public NActors::TActorBootstrapped<TDeferredCountersCleanupActor> {
public:
@@ -126,8 +126,8 @@ class TRunActor : public NActors::TActorBootstrapped<TRunActor> {
public:
explicit TRunActor(
const ::NYq::NCommon::TServiceCounters& serviceCounters
- , TRunActorParams&& params)
- : Params(std::move(params))
+ , TRunActorParams&& params)
+ : Params(std::move(params))
, CreatedAt(TInstant::Now())
, ServiceCounters(serviceCounters)
, QueryCounters(serviceCounters)
@@ -294,11 +294,11 @@ private:
}
}
- void FailOnException() {
- Fail(CurrentExceptionMessage());
- }
-
- void Fail(const TString& errorMessage) {
+ void FailOnException() {
+ Fail(CurrentExceptionMessage());
+ }
+
+ void Fail(const TString& errorMessage) {
LOG_E("Fail for query " << Params.QueryId << ", finishing: " << Finishing << ", details: " << errorMessage);
if (YqConnections.empty()) {
@@ -426,8 +426,8 @@ private:
} else {
CredentialsForConsumersCreation.emplace_back(NYdb::CreateInsecureCredentialsProviderFactory());
}
-
- TopicsForConsumersCreation.emplace_back(std::move(srcDesc));
+
+ TopicsForConsumersCreation.emplace_back(std::move(srcDesc));
}
}
}
@@ -532,10 +532,10 @@ private:
QueryStateUpdateRequest.set_result_set_count(UpdateResultIndices());
for (const auto& graphParams : DqGraphParams) {
if (graphParams.GetResultType()) {
- TProtoBuilder builder(graphParams.GetResultType(), {graphParams.GetColumns().begin(), graphParams.GetColumns().end()});
- const auto emptyResultSet = builder.BuildResultSet({});
+ TProtoBuilder builder(graphParams.GetResultType(), {graphParams.GetColumns().begin(), graphParams.GetColumns().end()});
+ const auto emptyResultSet = builder.BuildResultSet({});
auto* header = QueryStateUpdateRequest.add_result_set_meta();
- (*header->mutable_column()) = emptyResultSet.columns();
+ (*header->mutable_column()) = emptyResultSet.columns();
}
}
*request.mutable_result_set_meta() = QueryStateUpdateRequest.result_set_meta();
@@ -778,7 +778,7 @@ private:
void RunReadRulesDeletionActor() {
TVector<std::shared_ptr<NYdb::ICredentialsProviderFactory>> credentials;
- credentials.reserve(Params.CreatedTopicConsumers.size());
+ credentials.reserve(Params.CreatedTopicConsumers.size());
for (const Yq::Private::TopicConsumer& c : Params.CreatedTopicConsumers) {
if (const TString& tokenName = c.token_name()) {
credentials.emplace_back(
@@ -800,14 +800,14 @@ private:
}
void RunDqGraphs() {
- if (DqGraphParams.empty()) {
- *QueryStateUpdateRequest.mutable_started_at() = google::protobuf::util::TimeUtil::MillisecondsToTimestamp(CreatedAt.MilliSeconds());
- QueryStateUpdateRequest.set_resign_query(false);
- const bool isOk = Issues.Size() == 0;
+ if (DqGraphParams.empty()) {
+ *QueryStateUpdateRequest.mutable_started_at() = google::protobuf::util::TimeUtil::MillisecondsToTimestamp(CreatedAt.MilliSeconds());
+ QueryStateUpdateRequest.set_resign_query(false);
+ const bool isOk = Issues.Size() == 0;
Finish(GetFinishStatus(isOk));
- return;
- }
-
+ return;
+ }
+
{
Params.Status = YandexQuery::QueryMeta::RUNNING;
Yq::Private::PingTaskRequest request;
@@ -852,9 +852,9 @@ private:
}
void RunNextDqGraph() {
- auto& dqGraphParams = DqGraphParams.at(DqGraphIndex);
+ auto& dqGraphParams = DqGraphParams.at(DqGraphIndex);
TDqConfiguration::TPtr dqConfiguration = MakeIntrusive<TDqConfiguration>();
- dqConfiguration->Dispatch(dqGraphParams.GetSettings());
+ dqConfiguration->Dispatch(dqGraphParams.GetSettings());
dqConfiguration->FreezeDefaults();
dqConfiguration->FallbackPolicy = "never";
@@ -867,7 +867,7 @@ private:
writerResultId.HistoryId = Params.QueryId;
writerResultId.Id = Params.ResultId;
writerResultId.Owner = Params.Owner;
- writerResultId.SetId = DqGrapResultIndices.at(DqGraphIndex);
+ writerResultId.SetId = DqGrapResultIndices.at(DqGraphIndex);
}
TVector<TString> columns;
for (const auto& column : dqGraphParams.GetColumns()) {
@@ -908,43 +908,43 @@ private:
LOG_D("Executer: " << ExecuterId << ", Controller: " << ControlId << ", ResultIdActor: " << resultId << ", CheckPointCoordinatior " << CheckpointCoordinatorId);
}
- void SetupDqSettings(::google::protobuf::RepeatedPtrField< ::NYql::TAttr>& dqSettings) const {
- auto attr = dqSettings.Add();
- attr->SetName("MaxTasksPerStage");
- attr->SetValue("500");
-
- attr = dqSettings.Add();
- attr->SetName("MaxTasksPerOperation");
+ void SetupDqSettings(::google::protobuf::RepeatedPtrField< ::NYql::TAttr>& dqSettings) const {
+ auto attr = dqSettings.Add();
+ attr->SetName("MaxTasksPerStage");
+ attr->SetValue("500");
+
+ attr = dqSettings.Add();
+ attr->SetName("MaxTasksPerOperation");
attr->SetValue(ToString(MaxTasksPerOperation));
-
- attr = dqSettings.Add();
- attr->SetName("EnableComputeActor");
- attr->SetValue("1");
-
- // Streaming queries:
- // - turn off timeout;
- // - turn on check that query has one graph.
+
+ attr = dqSettings.Add();
+ attr->SetName("EnableComputeActor");
+ attr->SetValue("1");
+
+ // Streaming queries:
+ // - turn off timeout;
+ // - turn on check that query has one graph.
if (Params.QueryType == YandexQuery::QueryContent::STREAMING) {
- attr = dqSettings.Add();
- attr->SetName("_TableTimeout");
- attr->SetValue("0");
-
- attr = dqSettings.Add();
- attr->SetName("_LiteralTimeout");
- attr->SetValue("0");
-
- attr = dqSettings.Add();
- attr->SetName("_OneGraphPerQuery");
- attr->SetValue("1");
- }
+ attr = dqSettings.Add();
+ attr->SetName("_TableTimeout");
+ attr->SetValue("0");
+
+ attr = dqSettings.Add();
+ attr->SetName("_LiteralTimeout");
+ attr->SetValue("0");
+
+ attr = dqSettings.Add();
+ attr->SetName("_OneGraphPerQuery");
+ attr->SetValue("1");
+ }
if (Params.QueryType == YandexQuery::QueryContent_QueryType_ANALYTICS) {
attr = dqSettings.Add();
attr->SetName("AnalyticsHopping");
attr->SetValue("1");
}
- }
-
+ }
+
void AddClustersFromConfig(NYql::TGatewaysConfig& gatewaysConfig, THashMap<TString, TString>& clusters) const {
for (const auto& pq : Params.GatewaysConfig.GetPq().GetClusterMapping()) {
auto& clusterCfg = *gatewaysConfig.MutablePq()->AddClusterMapping();
@@ -957,8 +957,8 @@ private:
clusterCfg = solomon;
clusters.emplace(clusterCfg.GetName(), SolomonProviderName);
}
- }
-
+ }
+
YandexQuery::QueryMeta::ComputeStatus GetFinishStatus(bool isOk) const {
if (isOk) {
return YandexQuery::QueryMeta::COMPLETED;
@@ -1091,7 +1091,7 @@ private:
void FillDqGraphParams() {
for (const auto& s : Params.DqGraphs) {
NYq::NProto::TGraphParams dqGraphParams;
- Y_VERIFY(dqGraphParams.ParseFromString(s));
+ Y_VERIFY(dqGraphParams.ParseFromString(s));
DqGraphParams.emplace_back(std::move(dqGraphParams));
}
}
@@ -1112,21 +1112,21 @@ private:
bool CompileQuery() {
LOG_D("Compiling query ...");
NYql::TGatewaysConfig gatewaysConfig;
- SetupDqSettings(*gatewaysConfig.MutableDq()->MutableDefaultSettings());
+ SetupDqSettings(*gatewaysConfig.MutableDq()->MutableDefaultSettings());
- THashMap<TString, TString> clusters;
+ THashMap<TString, TString> clusters;
- //todo: consider cluster name clashes
- AddClustersFromConfig(gatewaysConfig, clusters);
- AddSystemClusters(gatewaysConfig, clusters, Params.AuthToken);
- AddClustersFromConnections(YqConnections,
+ //todo: consider cluster name clashes
+ AddClustersFromConfig(gatewaysConfig, clusters);
+ AddSystemClusters(gatewaysConfig, clusters, Params.AuthToken);
+ AddClustersFromConnections(YqConnections,
Params.CommonConfig.GetUseBearerForYdb(),
Params.CommonConfig.GetObjectStorageEndpoint(),
- Params.AuthToken,
- Params.AccountIdSignatures,
- // out params:
- gatewaysConfig,
- clusters);
+ Params.AuthToken,
+ Params.AccountIdSignatures,
+ // out params:
+ gatewaysConfig,
+ clusters);
TVector<TDataProviderInitializer> dataProvidersInit;
const auto dbResolver = std::make_shared<TDatabaseAsyncResolverWithMeta>(TDatabaseAsyncResolverWithMeta(NActors::TActivationContext::ActorSystem(), Params.DatabaseResolver,
@@ -1169,7 +1169,7 @@ private:
dataProvidersInit.push_back(GetSolomonDataProviderInitializer(solomonGateway, false));
}
- TProgramFactory progFactory(false, Params.FunctionRegistry, Params.NextUniqueId, dataProvidersInit, "yq");
+ TProgramFactory progFactory(false, Params.FunctionRegistry, Params.NextUniqueId, dataProvidersInit, "yq");
progFactory.SetModules(Params.ModuleResolver);
progFactory.SetUdfResolver(NYql::NCommon::CreateSimpleUdfResolver(Params.FunctionRegistry, nullptr));
progFactory.SetGatewaysConfig(&gatewaysConfig);
@@ -1188,53 +1188,53 @@ private:
sqlSettings.ClusterMapping = clusters;
sqlSettings.SyntaxVersion = 1;
sqlSettings.V0Behavior = NSQLTranslation::EV0Behavior::Disable;
- sqlSettings.Flags.insert({ "DqEngineEnable", "DqEngineForce" });
- try {
- AddTableBindingsFromBindings(Params.Bindings, YqConnections, sqlSettings);
- } catch (const std::exception& e) {
- Issues.AddIssue(ExceptionToIssue(e));
- return false;
- }
-
- // parse phase
- {
- if (!Program->ParseSql(sqlSettings)) {
- Issues.AddIssues(Program->Issues());
- return false;
-
- }
-
- if (Params.ExecuteMode == YandexQuery::ExecuteMode::PARSE) {
- return true;
- }
- }
-
- // compile phase
- {
- if (!Program->Compile("")) {
- Issues.AddIssues(Program->Issues());
- return false;
- }
-
- if (Params.ExecuteMode == YandexQuery::ExecuteMode::COMPILE) {
- return true;
- }
- }
-
- // next phases can be async: optimize, validate, run
- TProgram::TFutureStatus futureStatus;
- switch (Params.ExecuteMode) {
- case YandexQuery::ExecuteMode::EXPLAIN:
- futureStatus = Program->OptimizeAsync("");
- break;
- case YandexQuery::ExecuteMode::VALIDATE:
- futureStatus = Program->ValidateAsync("");
- break;
- case YandexQuery::ExecuteMode::RUN:
- futureStatus = Program->RunAsync("");
- break;
- default:
- Issues.AddIssue(TStringBuilder() << "Unexpected execute mode " << static_cast<int>(Params.ExecuteMode));
+ sqlSettings.Flags.insert({ "DqEngineEnable", "DqEngineForce" });
+ try {
+ AddTableBindingsFromBindings(Params.Bindings, YqConnections, sqlSettings);
+ } catch (const std::exception& e) {
+ Issues.AddIssue(ExceptionToIssue(e));
+ return false;
+ }
+
+ // parse phase
+ {
+ if (!Program->ParseSql(sqlSettings)) {
+ Issues.AddIssues(Program->Issues());
+ return false;
+
+ }
+
+ if (Params.ExecuteMode == YandexQuery::ExecuteMode::PARSE) {
+ return true;
+ }
+ }
+
+ // compile phase
+ {
+ if (!Program->Compile("")) {
+ Issues.AddIssues(Program->Issues());
+ return false;
+ }
+
+ if (Params.ExecuteMode == YandexQuery::ExecuteMode::COMPILE) {
+ return true;
+ }
+ }
+
+ // next phases can be async: optimize, validate, run
+ TProgram::TFutureStatus futureStatus;
+ switch (Params.ExecuteMode) {
+ case YandexQuery::ExecuteMode::EXPLAIN:
+ futureStatus = Program->OptimizeAsync("");
+ break;
+ case YandexQuery::ExecuteMode::VALIDATE:
+ futureStatus = Program->ValidateAsync("");
+ break;
+ case YandexQuery::ExecuteMode::RUN:
+ futureStatus = Program->RunAsync("");
+ break;
+ default:
+ Issues.AddIssue(TStringBuilder() << "Unexpected execute mode " << static_cast<int>(Params.ExecuteMode));
return false;
}
@@ -1272,7 +1272,7 @@ private:
}
void Handle(NActors::TEvents::TEvUndelivered::TPtr&) {
- Fail("TRunActor::OnUndelivered");
+ Fail("TRunActor::OnUndelivered");
}
TString FindTokenByName(const TString& tokenName) const {
@@ -1283,7 +1283,7 @@ private:
return token->second;
}
}
- throw yexception() << "Token " << tokenName << " was not found in secure params";
+ throw yexception() << "Token " << tokenName << " was not found in secure params";
}
void AddIssueWithSubIssues(const TString& message, const NYql::TIssues& issues) {
@@ -1315,7 +1315,7 @@ private:
<< " }");
}
-private:
+private:
TRunActorParams Params;
THashMap<TString, YandexQuery::Connection> YqConnections;
@@ -1370,9 +1370,9 @@ private:
IActor* CreateRunActor(
const ::NYq::NCommon::TServiceCounters& serviceCounters,
- TRunActorParams&& params
+ TRunActorParams&& params
) {
- return new TRunActor(serviceCounters, std::move(params));
+ return new TRunActor(serviceCounters, std::move(params));
}
} /* NYq */
diff --git a/ydb/core/yq/libs/actors/run_actor_params.cpp b/ydb/core/yq/libs/actors/run_actor_params.cpp
index 1446cae1bb..7e0231c9d6 100644
--- a/ydb/core/yq/libs/actors/run_actor_params.cpp
+++ b/ydb/core/yq/libs/actors/run_actor_params.cpp
@@ -26,12 +26,12 @@ TRunActorParams::TRunActorParams(
const TString& userId,
const TString& owner,
const int64_t previousQueryRevision,
- TVector<YandexQuery::Connection> connections,
- TVector<YandexQuery::Binding> bindings,
+ TVector<YandexQuery::Connection> connections,
+ TVector<YandexQuery::Binding> bindings,
NYql::ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
THashMap<TString, TString> accountIdSignatures,
YandexQuery::QueryContent::QueryType queryType,
- YandexQuery::ExecuteMode executeMode,
+ YandexQuery::ExecuteMode executeMode,
const TString& resultId,
const YandexQuery::StateLoadMode stateLoadMode,
const YandexQuery::StreamingDisposition& streamingDisposition,
@@ -67,12 +67,12 @@ TRunActorParams::TRunActorParams(
, UserId(userId)
, Owner(owner)
, PreviousQueryRevision(previousQueryRevision)
- , Connections(std::move(connections))
- , Bindings(std::move(bindings))
- , CredentialsFactory(std::move(credentialsFactory))
- , AccountIdSignatures(std::move(accountIdSignatures))
+ , Connections(std::move(connections))
+ , Bindings(std::move(bindings))
+ , CredentialsFactory(std::move(credentialsFactory))
+ , AccountIdSignatures(std::move(accountIdSignatures))
, QueryType(queryType)
- , ExecuteMode(executeMode)
+ , ExecuteMode(executeMode)
, ResultId(resultId)
, StateLoadMode(stateLoadMode)
, StreamingDisposition(streamingDisposition)
diff --git a/ydb/core/yq/libs/actors/run_actor_params.h b/ydb/core/yq/libs/actors/run_actor_params.h
index bad5c3c32b..32cd1648b2 100644
--- a/ydb/core/yq/libs/actors/run_actor_params.h
+++ b/ydb/core/yq/libs/actors/run_actor_params.h
@@ -40,12 +40,12 @@ struct TRunActorParams { // TODO2 : Change name
const TString& userId,
const TString& owner,
const int64_t previousQueryRevision,
- TVector<YandexQuery::Connection> connections,
- TVector<YandexQuery::Binding> bindings,
+ TVector<YandexQuery::Connection> connections,
+ TVector<YandexQuery::Binding> bindings,
NYql::ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
THashMap<TString, TString> accountIdSignatures,
YandexQuery::QueryContent::QueryType queryType,
- YandexQuery::ExecuteMode executeMode,
+ YandexQuery::ExecuteMode executeMode,
const TString& resultId,
const YandexQuery::StateLoadMode stateLoadMode,
const YandexQuery::StreamingDisposition& streamingDisposition,
@@ -61,8 +61,8 @@ struct TRunActorParams { // TODO2 : Change name
const NMonitoring::TDynamicCounterPtr& clientCounters
);
- TRunActorParams(const TRunActorParams& params) = default;
- TRunActorParams(TRunActorParams&& params) = default;
+ TRunActorParams(const TRunActorParams& params) = default;
+ TRunActorParams(TRunActorParams&& params) = default;
NYdb::TDriver Driver;
NYql::IHTTPGateway::TPtr S3Gateway;
@@ -87,11 +87,11 @@ struct TRunActorParams { // TODO2 : Change name
const TString Owner;
const int64_t PreviousQueryRevision;
const TVector<YandexQuery::Connection> Connections;
- const TVector<YandexQuery::Binding> Bindings;
+ const TVector<YandexQuery::Binding> Bindings;
const NYql::ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
- const THashMap<TString, TString> AccountIdSignatures;
+ const THashMap<TString, TString> AccountIdSignatures;
const YandexQuery::QueryContent::QueryType QueryType;
- const YandexQuery::ExecuteMode ExecuteMode;
+ const YandexQuery::ExecuteMode ExecuteMode;
const TString ResultId;
const YandexQuery::StateLoadMode StateLoadMode;
const YandexQuery::StreamingDisposition StreamingDisposition;
diff --git a/ydb/core/yq/libs/actors/system_clusters.cpp b/ydb/core/yq/libs/actors/system_clusters.cpp
index 2968ae6487..6b11425fc0 100644
--- a/ydb/core/yq/libs/actors/system_clusters.cpp
+++ b/ydb/core/yq/libs/actors/system_clusters.cpp
@@ -1,24 +1,24 @@
-#include "system_clusters.h"
-
+#include "system_clusters.h"
+
#include <ydb/library/yql/providers/common/provider/yql_provider_names.h>
-#include <util/generic/hash.h>
-
+#include <util/generic/hash.h>
+
namespace NYq {
-
+
using namespace NYql;
-void AddSystemClusters(TGatewaysConfig& gatewaysConfig, THashMap<TString, TString>& clusters, const TString& authToken) {
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("logbroker");
- clusterCfg->SetEndpoint("logbroker.yandex.net:2135");
- clusterCfg->SetConfigManagerEndpoint("cm.logbroker.yandex.net:1111");
- clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
- clusterCfg->SetToken(authToken);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+void AddSystemClusters(TGatewaysConfig& gatewaysConfig, THashMap<TString, TString>& clusters, const TString& authToken) {
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName("logbroker");
+ clusterCfg->SetEndpoint("logbroker.yandex.net:2135");
+ clusterCfg->SetConfigManagerEndpoint("cm.logbroker.yandex.net:1111");
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
+ clusterCfg->SetToken(authToken);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
clusterCfg->SetName("logbroker_iam_no_sa");
clusterCfg->SetEndpoint("logbroker.yandex.net:2135");
clusterCfg->SetConfigManagerEndpoint("cm.logbroker.yandex.net:1111");
@@ -29,93 +29,93 @@ void AddSystemClusters(TGatewaysConfig& gatewaysConfig, THashMap<TString, TStrin
}
{
const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("lbkx");
- clusterCfg->SetEndpoint("lbkx.logbroker.yandex.net:2135");
- clusterCfg->SetConfigManagerEndpoint("cm.lbkx.logbroker.yandex.net:1111");
- clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
- clusterCfg->SetToken(authToken);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("logbroker_prestable");
- clusterCfg->SetEndpoint("logbroker-prestable.yandex.net:2135");
- clusterCfg->SetConfigManagerEndpoint("cm.logbroker-prestable.yandex.net:1111");
- clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
- clusterCfg->SetToken(authToken);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("logbroker_prestable_iam");
- clusterCfg->SetEndpoint("logbroker-prestable.yandex.net:2135");
- clusterCfg->SetConfigManagerEndpoint("cm.logbroker-prestable.yandex.net:1111");
- clusterCfg->SetServiceAccountId("f6ooj9og003v61fjb821");
- clusterCfg->SetServiceAccountIdSignature("26YmpsY8SkqCNirlRduj8bqt4JQ=");
- clusterCfg->SetAddBearerToToken(true);
- clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("logbroker_prestable_iam_no_sa");
- clusterCfg->SetEndpoint("logbroker-prestable.yandex.net:2135");
- clusterCfg->SetConfigManagerEndpoint("cm.logbroker-prestable.yandex.net:1111");
- clusterCfg->SetAddBearerToToken(true);
- clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
- clusterCfg->SetToken(authToken);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("lbkxt");
- clusterCfg->SetEndpoint("lbkxt.logbroker.yandex.net:2135");
- clusterCfg->SetConfigManagerEndpoint("cm.lbkxt.logbroker.yandex.net:1111");
- clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
- clusterCfg->SetToken(authToken);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("datastreams_preprod");
- clusterCfg->SetEndpoint("lb.cc802lcdcldbsh7b5fd1.ydb.mdb.cloud-preprod.yandex.net:2135");
- clusterCfg->SetClusterType(TPqClusterConfig::CT_DATA_STREAMS);
- clusterCfg->SetToken(authToken);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("yc-logbroker-preprod");
- clusterCfg->SetEndpoint("lb.cc8035oc71oh9um52mv3.ydb.mdb.cloud-preprod.yandex.net:2135");
- clusterCfg->SetConfigManagerEndpoint("cm.global.logbroker.cloud-preprod.yandex.net:1111");
- clusterCfg->SetDatabase("/pre-prod_global/aoeb66ftj1tbt1b2eimn/cc8035oc71oh9um52mv3");
+ clusterCfg->SetName("lbkx");
+ clusterCfg->SetEndpoint("lbkx.logbroker.yandex.net:2135");
+ clusterCfg->SetConfigManagerEndpoint("cm.lbkx.logbroker.yandex.net:1111");
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
+ clusterCfg->SetToken(authToken);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName("logbroker_prestable");
+ clusterCfg->SetEndpoint("logbroker-prestable.yandex.net:2135");
+ clusterCfg->SetConfigManagerEndpoint("cm.logbroker-prestable.yandex.net:1111");
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
+ clusterCfg->SetToken(authToken);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName("logbroker_prestable_iam");
+ clusterCfg->SetEndpoint("logbroker-prestable.yandex.net:2135");
+ clusterCfg->SetConfigManagerEndpoint("cm.logbroker-prestable.yandex.net:1111");
+ clusterCfg->SetServiceAccountId("f6ooj9og003v61fjb821");
+ clusterCfg->SetServiceAccountIdSignature("26YmpsY8SkqCNirlRduj8bqt4JQ=");
+ clusterCfg->SetAddBearerToToken(true);
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName("logbroker_prestable_iam_no_sa");
+ clusterCfg->SetEndpoint("logbroker-prestable.yandex.net:2135");
+ clusterCfg->SetConfigManagerEndpoint("cm.logbroker-prestable.yandex.net:1111");
+ clusterCfg->SetAddBearerToToken(true);
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
+ clusterCfg->SetToken(authToken);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName("lbkxt");
+ clusterCfg->SetEndpoint("lbkxt.logbroker.yandex.net:2135");
+ clusterCfg->SetConfigManagerEndpoint("cm.lbkxt.logbroker.yandex.net:1111");
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
+ clusterCfg->SetToken(authToken);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName("datastreams_preprod");
+ clusterCfg->SetEndpoint("lb.cc802lcdcldbsh7b5fd1.ydb.mdb.cloud-preprod.yandex.net:2135");
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_DATA_STREAMS);
+ clusterCfg->SetToken(authToken);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName("yc-logbroker-preprod");
+ clusterCfg->SetEndpoint("lb.cc8035oc71oh9um52mv3.ydb.mdb.cloud-preprod.yandex.net:2135");
+ clusterCfg->SetConfigManagerEndpoint("cm.global.logbroker.cloud-preprod.yandex.net:1111");
+ clusterCfg->SetDatabase("/pre-prod_global/aoeb66ftj1tbt1b2eimn/cc8035oc71oh9um52mv3");
clusterCfg->SetUseSsl(true);
- clusterCfg->SetServiceAccountId("bfbf4nc8c849ej11k3aq"); // audit-trails-reader-sa
- clusterCfg->SetServiceAccountIdSignature("SyFk1SpKdQa6L8IJxnwvgC57yMQ=");
- clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
- clusterCfg->SetName("yc-logbroker");
- clusterCfg->SetEndpoint("lb.etn03iai600jur7pipla.ydb.mdb.yandexcloud.net:2135");
- clusterCfg->SetConfigManagerEndpoint("cm.global.logbroker.cloud.yandex.net:1111");
- clusterCfg->SetDatabase("/global/b1gvcqr959dbmi1jltep/etn03iai600jur7pipla");
+ clusterCfg->SetServiceAccountId("bfbf4nc8c849ej11k3aq"); // audit-trails-reader-sa
+ clusterCfg->SetServiceAccountIdSignature("SyFk1SpKdQa6L8IJxnwvgC57yMQ=");
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutablePq()->AddClusterMapping();
+ clusterCfg->SetName("yc-logbroker");
+ clusterCfg->SetEndpoint("lb.etn03iai600jur7pipla.ydb.mdb.yandexcloud.net:2135");
+ clusterCfg->SetConfigManagerEndpoint("cm.global.logbroker.cloud.yandex.net:1111");
+ clusterCfg->SetDatabase("/global/b1gvcqr959dbmi1jltep/etn03iai600jur7pipla");
clusterCfg->SetUseSsl(true);
- clusterCfg->SetServiceAccountId("aje0ir9755dd4ia9mpu5");
- clusterCfg->SetServiceAccountIdSignature("xxx");
- clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
- clusters.emplace(clusterCfg->GetName(), PqProviderName);
- }
- {
- const auto clusterCfg = gatewaysConfig.MutableSolomon()->AddClusterMapping();
- clusterCfg->SetName("solomon_prod");
- clusterCfg->SetCluster("solomon.yandex.net");
- clusterCfg->SetClusterType(TSolomonClusterConfig::SCT_SOLOMON);
- clusterCfg->SetUseSsl(true);
- clusterCfg->SetToken(authToken);
- clusters.emplace(clusterCfg->GetName(), SolomonProviderName);
- }
-}
+ clusterCfg->SetServiceAccountId("aje0ir9755dd4ia9mpu5");
+ clusterCfg->SetServiceAccountIdSignature("xxx");
+ clusterCfg->SetClusterType(TPqClusterConfig::CT_PERS_QUEUE);
+ clusters.emplace(clusterCfg->GetName(), PqProviderName);
+ }
+ {
+ const auto clusterCfg = gatewaysConfig.MutableSolomon()->AddClusterMapping();
+ clusterCfg->SetName("solomon_prod");
+ clusterCfg->SetCluster("solomon.yandex.net");
+ clusterCfg->SetClusterType(TSolomonClusterConfig::SCT_SOLOMON);
+ clusterCfg->SetUseSsl(true);
+ clusterCfg->SetToken(authToken);
+ clusters.emplace(clusterCfg->GetName(), SolomonProviderName);
+ }
+}
} //NYq
diff --git a/ydb/core/yq/libs/actors/system_clusters.h b/ydb/core/yq/libs/actors/system_clusters.h
index c842948fdc..5de7444b34 100644
--- a/ydb/core/yq/libs/actors/system_clusters.h
+++ b/ydb/core/yq/libs/actors/system_clusters.h
@@ -1,7 +1,7 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/providers/common/proto/gateways_config.pb.h>
-
+
namespace NYq {
void AddSystemClusters(NYql::TGatewaysConfig& gatewaysConfig, THashMap<TString, TString>& clusters, const TString& authToken);
diff --git a/ydb/core/yq/libs/actors/table_bindings_from_bindings.cpp b/ydb/core/yq/libs/actors/table_bindings_from_bindings.cpp
index e353a194a4..a8da87066c 100644
--- a/ydb/core/yq/libs/actors/table_bindings_from_bindings.cpp
+++ b/ydb/core/yq/libs/actors/table_bindings_from_bindings.cpp
@@ -1,78 +1,78 @@
-#include "table_bindings_from_bindings.h"
-
+#include "table_bindings_from_bindings.h"
+
#include <ydb/library/yql/providers/common/provider/yql_provider_names.h>
#include <ydb/core/yq/libs/result_formatter/result_formatter.h>
-#include <util/generic/vector.h>
-
+#include <util/generic/vector.h>
+
namespace NYq {
-
+
using namespace NYql;
-namespace {
-
-void FillBinding(NSQLTranslation::TTranslationSettings& sqlSettings, const YandexQuery::Binding& binding, const THashMap<TString, YandexQuery::Connection>& connections) {
- TString clusterType;
- TString path;
- TString format;
- TString compression;
- TString schema;
- switch (binding.content().setting().binding_case()) {
- case YandexQuery::BindingSetting::kDataStreams: {
- clusterType = PqProviderName;
- auto yds = binding.content().setting().data_streams();
- path = yds.stream_name();
- format = yds.format();
- compression = yds.compression();
- schema = FormatSchema(yds.schema());
- break;
- }
- case YandexQuery::BindingSetting::kObjectStorage: {
- clusterType = S3ProviderName;
- const auto s3 = binding.content().setting().object_storage();
- if (s3.subset().empty()) {
- throw yexception() << "No subsets in Object Storage binding " << binding.meta().id();
- }
-
- const auto& s = s3.subset(0);
- path = s.path_pattern();
- format = s.format();
- compression = s.compression();
- schema = FormatSchema(s.schema());
- break;
- }
-
- case YandexQuery::BindingSetting::BINDING_NOT_SET: {
- throw yexception() << "BINDING_NOT_SET case for binding " << binding.meta().id() << ", name " << binding.content().name();
- }
- // Do not add default. Adding a new binding should cause a compilation error
- }
-
- auto connectionPtr = connections.FindPtr(binding.content().connection_id());
- if (!connectionPtr) {
- throw yexception() << "Unable to resolve connection for binding " << binding.meta().id() << ", name " << binding.content().name() << ", connection id " << binding.content().connection_id();
- }
-
- NSQLTranslation::TTableBindingSettings bindSettings;
- bindSettings.ClusterType = clusterType;
- bindSettings.Settings["cluster"] = connectionPtr->content().name();
- bindSettings.Settings["path"] = path;
- bindSettings.Settings["format"] = format;
- // todo: fill format parameters
- if (compression) {
- bindSettings.Settings["compression"] = compression;
- }
- bindSettings.Settings["schema"] = schema;
-
- // todo: use visibility to fill either PrivateBindings or ScopedBindings
- sqlSettings.PrivateBindings[binding.content().name()] = std::move(bindSettings);
-}
+namespace {
+void FillBinding(NSQLTranslation::TTranslationSettings& sqlSettings, const YandexQuery::Binding& binding, const THashMap<TString, YandexQuery::Connection>& connections) {
+ TString clusterType;
+ TString path;
+ TString format;
+ TString compression;
+ TString schema;
+ switch (binding.content().setting().binding_case()) {
+ case YandexQuery::BindingSetting::kDataStreams: {
+ clusterType = PqProviderName;
+ auto yds = binding.content().setting().data_streams();
+ path = yds.stream_name();
+ format = yds.format();
+ compression = yds.compression();
+ schema = FormatSchema(yds.schema());
+ break;
+ }
+ case YandexQuery::BindingSetting::kObjectStorage: {
+ clusterType = S3ProviderName;
+ const auto s3 = binding.content().setting().object_storage();
+ if (s3.subset().empty()) {
+ throw yexception() << "No subsets in Object Storage binding " << binding.meta().id();
+ }
+
+ const auto& s = s3.subset(0);
+ path = s.path_pattern();
+ format = s.format();
+ compression = s.compression();
+ schema = FormatSchema(s.schema());
+ break;
+ }
+
+ case YandexQuery::BindingSetting::BINDING_NOT_SET: {
+ throw yexception() << "BINDING_NOT_SET case for binding " << binding.meta().id() << ", name " << binding.content().name();
+ }
+ // Do not add default. Adding a new binding should cause a compilation error
+ }
+
+ auto connectionPtr = connections.FindPtr(binding.content().connection_id());
+ if (!connectionPtr) {
+ throw yexception() << "Unable to resolve connection for binding " << binding.meta().id() << ", name " << binding.content().name() << ", connection id " << binding.content().connection_id();
+ }
+
+ NSQLTranslation::TTableBindingSettings bindSettings;
+ bindSettings.ClusterType = clusterType;
+ bindSettings.Settings["cluster"] = connectionPtr->content().name();
+ bindSettings.Settings["path"] = path;
+ bindSettings.Settings["format"] = format;
+ // todo: fill format parameters
+ if (compression) {
+ bindSettings.Settings["compression"] = compression;
+ }
+ bindSettings.Settings["schema"] = schema;
+
+ // todo: use visibility to fill either PrivateBindings or ScopedBindings
+ sqlSettings.PrivateBindings[binding.content().name()] = std::move(bindSettings);
+}
+
} //namespace
-
-void AddTableBindingsFromBindings(const TVector<YandexQuery::Binding>& bindings, const THashMap<TString, YandexQuery::Connection>& connections, NSQLTranslation::TTranslationSettings& sqlSettings) {
- for (const auto& binding : bindings) {
- FillBinding(sqlSettings, binding, connections);
- }
-}
+
+void AddTableBindingsFromBindings(const TVector<YandexQuery::Binding>& bindings, const THashMap<TString, YandexQuery::Connection>& connections, NSQLTranslation::TTranslationSettings& sqlSettings) {
+ for (const auto& binding : bindings) {
+ FillBinding(sqlSettings, binding, connections);
+ }
+}
} //NYq
diff --git a/ydb/core/yq/libs/actors/table_bindings_from_bindings.h b/ydb/core/yq/libs/actors/table_bindings_from_bindings.h
index 76343b06dc..def2290f13 100644
--- a/ydb/core/yq/libs/actors/table_bindings_from_bindings.h
+++ b/ydb/core/yq/libs/actors/table_bindings_from_bindings.h
@@ -1,10 +1,10 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/sql/settings/translation_settings.h>
#include <ydb/public/api/protos/yq.pb.h>
-
+
namespace NYq {
-void AddTableBindingsFromBindings(const TVector<YandexQuery::Binding>& bindings, const THashMap<TString, YandexQuery::Connection>& connections, NSQLTranslation::TTranslationSettings& sqlSettings);
+void AddTableBindingsFromBindings(const TVector<YandexQuery::Binding>& bindings, const THashMap<TString, YandexQuery::Connection>& connections, NSQLTranslation::TTranslationSettings& sqlSettings);
} //NYq
diff --git a/ydb/core/yq/libs/actors/task_get.cpp b/ydb/core/yq/libs/actors/task_get.cpp
index d31517aa9f..aed8f37254 100644
--- a/ydb/core/yq/libs/actors/task_get.cpp
+++ b/ydb/core/yq/libs/actors/task_get.cpp
@@ -112,9 +112,9 @@ public:
case YandexQuery::ConnectionSetting::kMonitoring: {
return GetServiceAccountId(c.content().setting().monitoring().auth());
}
- case YandexQuery::ConnectionSetting::kClickhouseCluster: {
- return GetServiceAccountId(c.content().setting().clickhouse_cluster().auth());
- }
+ case YandexQuery::ConnectionSetting::kClickhouseCluster: {
+ return GetServiceAccountId(c.content().setting().clickhouse_cluster().auth());
+ }
// Do not replace with default. Adding a new connection should cause a compilation error
case YandexQuery::ConnectionSetting::CONNECTION_NOT_SET:
break;
diff --git a/ydb/core/yq/libs/actors/ya.make b/ydb/core/yq/libs/actors/ya.make
index 3638593814..dfb69fd2b5 100644
--- a/ydb/core/yq/libs/actors/ya.make
+++ b/ydb/core/yq/libs/actors/ya.make
@@ -3,21 +3,21 @@ OWNER(g:yq)
LIBRARY()
SRCS(
- clusters_from_connections.cpp
+ clusters_from_connections.cpp
database_resolver.cpp
- error.cpp
- nodes_health_check.cpp
+ error.cpp
+ nodes_health_check.cpp
nodes_manager.cpp
- pending_fetcher.cpp
- pinger.cpp
+ pending_fetcher.cpp
+ pinger.cpp
proxy.cpp
- proxy_private.cpp
- result_writer.cpp
+ proxy_private.cpp
+ result_writer.cpp
run_actor.cpp
run_actor_params.cpp
- system_clusters.cpp
- table_bindings_from_bindings.cpp
- task_get.cpp
+ system_clusters.cpp
+ table_bindings_from_bindings.cpp
+ task_get.cpp
task_ping.cpp
task_result_write.cpp
)
diff --git a/ydb/core/yq/libs/checkpointing/ut/ya.make b/ydb/core/yq/libs/checkpointing/ut/ya.make
index cf9700d584..116c8d62c7 100644
--- a/ydb/core/yq/libs/checkpointing/ut/ya.make
+++ b/ydb/core/yq/libs/checkpointing/ut/ya.make
@@ -1,6 +1,6 @@
UNITTEST_FOR(ydb/core/yq/libs/checkpointing)
-OWNER(g:yq)
+OWNER(g:yq)
SRCS(
checkpoint_coordinator_ut.cpp
@@ -17,4 +17,4 @@ SIZE(MEDIUM)
YQL_LAST_ABI_VERSION()
-END()
+END()
diff --git a/ydb/core/yq/libs/checkpointing/ya.make b/ydb/core/yq/libs/checkpointing/ya.make
index 8a397f67ef..23eb5d7c03 100644
--- a/ydb/core/yq/libs/checkpointing/ya.make
+++ b/ydb/core/yq/libs/checkpointing/ya.make
@@ -1,5 +1,5 @@
OWNER(
- g:yq
+ g:yq
)
LIBRARY()
diff --git a/ydb/core/yq/libs/common/database_token_builder.h b/ydb/core/yq/libs/common/database_token_builder.h
index a3e00efab5..10f0d7cfe4 100644
--- a/ydb/core/yq/libs/common/database_token_builder.h
+++ b/ydb/core/yq/libs/common/database_token_builder.h
@@ -1,5 +1,5 @@
#pragma once
-
+
#include <ydb/core/yq/libs/control_plane_storage/events/events.h>
#include <ydb/core/yq/libs/events/events.h>
diff --git a/ydb/core/yq/libs/common/ya.make b/ydb/core/yq/libs/common/ya.make
index 4622695700..0e2278ccaa 100644
--- a/ydb/core/yq/libs/common/ya.make
+++ b/ydb/core/yq/libs/common/ya.make
@@ -21,6 +21,6 @@ YQL_LAST_ABI_VERSION()
END()
-RECURSE_FOR_TESTS(
+RECURSE_FOR_TESTS(
ut
)
diff --git a/ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp b/ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp
index 783b924238..d7a7058de2 100644
--- a/ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/in_memory_control_plane_storage.cpp
@@ -331,7 +331,7 @@ private:
void SendEmptyResponse(TRequest& ev, std::string logText) {
CPS_LOG_I(logText);
- TResult result = {};
+ TResult result = {};
auto event = std::make_unique<TEvResult>(result);
NActors::TActivationContext::ActorSystem()->Send(new IEventHandle(ev->Sender, SelfId(), event.release(), 0, ev->Cookie));
}
diff --git a/ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto b/ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto
index e6ebff0c84..54f9be96a0 100644
--- a/ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto
+++ b/ydb/core/yq/libs/control_plane_storage/proto/yq_internal.proto
@@ -23,7 +23,7 @@ message QueryInternal {
repeated YandexQuery.Binding binding = 6;
YandexQuery.QueryAction action = 7;
string ast = 8; // deprected and should not be used, will be removed in future
- ExecuteMode execute_mode = 9;
+ ExecuteMode execute_mode = 9;
StateLoadMode state_load_mode = 10;
string cloud_id = 11;
repeated Yq.Private.TopicConsumer created_topic_consumers = 12;
diff --git a/ydb/core/yq/libs/control_plane_storage/ya.make b/ydb/core/yq/libs/control_plane_storage/ya.make
index 8304e50db5..2acda2084f 100644
--- a/ydb/core/yq/libs/control_plane_storage/ya.make
+++ b/ydb/core/yq/libs/control_plane_storage/ya.make
@@ -24,11 +24,11 @@ PEERDIR(
ydb/core/yq/libs/common
ydb/core/yq/libs/config
ydb/core/yq/libs/config/protos
- ydb/core/yq/libs/control_plane_storage/events
+ ydb/core/yq/libs/control_plane_storage/events
ydb/core/yq/libs/control_plane_storage/internal
ydb/core/yq/libs/control_plane_storage/proto
ydb/core/yq/libs/db_schema
- ydb/core/yq/libs/graph_params/proto
+ ydb/core/yq/libs/graph_params/proto
ydb/core/yq/libs/shared_resources
ydb/core/yq/libs/ydb
ydb/library/security
@@ -44,6 +44,6 @@ END()
RECURSE(
events
- internal
+ internal
proto
)
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
index 398725f7f4..93b2ed024e 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
@@ -331,7 +331,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListQueries
TVector<TString> filters;
if (request.filter().name()) {
queryBuilder.AddString("filter_name", request.filter().name());
- filters.push_back("`" NAME_COLUMN_NAME "` ILIKE '%' || $filter_name || '%'");
+ filters.push_back("`" NAME_COLUMN_NAME "` ILIKE '%' || $filter_name || '%'");
}
if (request.filter().query_type() != YandexQuery::QueryContent::QUERY_TYPE_UNSPECIFIED) {
diff --git a/ydb/core/yq/libs/events/events.h b/ydb/core/yq/libs/events/events.h
index b3c70e5c5f..7f11c52cc8 100644
--- a/ydb/core/yq/libs/events/events.h
+++ b/ydb/core/yq/libs/events/events.h
@@ -12,8 +12,8 @@
#include <library/cpp/actors/core/events.h>
-#include <util/digest/multi.h>
-
+#include <util/digest/multi.h>
+
namespace NYq {
using NYdb::NYq::TScope;
@@ -113,7 +113,7 @@ struct TEvents {
using TFunction = std::function<NYdb::TAsyncStatus(NYdb::NTable::TSession&)>;
TFunction Handler;
- explicit TEvDbFunctionRequest(const TFunction& handler)
+ explicit TEvDbFunctionRequest(const TFunction& handler)
: Handler(handler)
{}
};
@@ -121,7 +121,7 @@ struct TEvents {
struct TEvDbFunctionResponse : NActors::TEventLocal<TEvDbFunctionResponse, TEventIds::EvDbFunctionResponse> {
NYdb::TStatus Status;
- explicit TEvDbFunctionResponse(NYdb::TStatus status)
+ explicit TEvDbFunctionResponse(NYdb::TStatus status)
: Status(status)
{}
};
@@ -130,42 +130,42 @@ struct TEvents {
struct TEndpoint {
TString Endpoint;
TString Database;
- bool Secure = false;
+ bool Secure = false;
};
- THashMap<std::pair<TString, DatabaseType>, TEndpoint> DatabaseId2Endpoint;
+ THashMap<std::pair<TString, DatabaseType>, TEndpoint> DatabaseId2Endpoint;
bool Success;
- TEvEndpointResponse(THashMap<std::pair<TString, DatabaseType>, TEndpoint>&& res, bool success)
- : DatabaseId2Endpoint(std::move(res))
+ TEvEndpointResponse(THashMap<std::pair<TString, DatabaseType>, TEndpoint>&& res, bool success)
+ : DatabaseId2Endpoint(std::move(res))
, Success(success)
{ }
};
- struct TDatabaseAuth {
- TString StructuredToken;
- bool AddBearerToToken = false;
-
- bool operator==(const TDatabaseAuth& other) const {
- return std::tie(StructuredToken, AddBearerToToken) == std::tie(other.StructuredToken, other.AddBearerToToken);
- }
- bool operator!=(const TDatabaseAuth& other) const {
- return !(*this == other);
- }
- };
-
+ struct TDatabaseAuth {
+ TString StructuredToken;
+ bool AddBearerToToken = false;
+
+ bool operator==(const TDatabaseAuth& other) const {
+ return std::tie(StructuredToken, AddBearerToToken) == std::tie(other.StructuredToken, other.AddBearerToToken);
+ }
+ bool operator!=(const TDatabaseAuth& other) const {
+ return !(*this == other);
+ }
+ };
+
struct TEvEndpointRequest : NActors::TEventLocal<TEvEndpointRequest, TEventIds::EvEndpointRequest> {
- THashMap<std::pair<TString, DatabaseType>, TDatabaseAuth> DatabaseIds; // DbId, DatabaseType => database auth
+ THashMap<std::pair<TString, DatabaseType>, TDatabaseAuth> DatabaseIds; // DbId, DatabaseType => database auth
TString YdbMvpEndpoint;
TString MdbGateway;
TString TraceId;
bool MdbTransformHost;
TEvEndpointRequest(
- const THashMap<std::pair<TString, DatabaseType>, TDatabaseAuth>& databaseIds,
+ const THashMap<std::pair<TString, DatabaseType>, TDatabaseAuth>& databaseIds,
const TString& ydbMvpEndpoint,
const TString& mdbGateway,
const TString& traceId,
- bool mdbTransformHost)
+ bool mdbTransformHost)
: DatabaseIds(databaseIds)
, YdbMvpEndpoint(ydbMvpEndpoint)
, MdbGateway(mdbGateway)
@@ -175,7 +175,7 @@ struct TEvents {
};
struct TEvDataStreamsReadRulesCreationResult : NActors::TEventLocal<TEvDataStreamsReadRulesCreationResult, TEventIds::EvDataStreamsReadRulesCreationResult> {
- explicit TEvDataStreamsReadRulesCreationResult(NYql::TIssues issues)
+ explicit TEvDataStreamsReadRulesCreationResult(NYql::TIssues issues)
: Issues(std::move(issues))
{
}
@@ -193,7 +193,7 @@ struct TEvents {
};
struct TEvQueryActionResult : NActors::TEventLocal<TEvQueryActionResult, TEventIds::EvQueryActionResult> {
- explicit TEvQueryActionResult(YandexQuery::QueryAction action)
+ explicit TEvQueryActionResult(YandexQuery::QueryAction action)
: Action(action)
{
}
@@ -236,10 +236,10 @@ struct TEvents {
};
} // namespace NYq
-
-template<>
+
+template<>
struct THash<NYq::TEvents::TDatabaseAuth> {
inline ui64 operator()(const NYq::TEvents::TDatabaseAuth& x) const noexcept {
- return MultiHash(x.StructuredToken, x.AddBearerToToken);
- }
-};
+ return MultiHash(x.StructuredToken, x.AddBearerToToken);
+ }
+};
diff --git a/ydb/core/yq/libs/gateway/ya.make b/ydb/core/yq/libs/gateway/ya.make
index 503e9b691b..06d00f1f0b 100644
--- a/ydb/core/yq/libs/gateway/ya.make
+++ b/ydb/core/yq/libs/gateway/ya.make
@@ -11,7 +11,7 @@ PEERDIR(
library/cpp/monlib/dynamic_counters
ydb/core/yq/libs/actors
ydb/core/yq/libs/events
- ydb/core/yq/libs/read_rule
+ ydb/core/yq/libs/read_rule
ydb/core/yq/libs/shared_resources
ydb/core/yq/libs/tasks_packer
ydb/library/yql/providers/common/token_accessor/client
diff --git a/ydb/core/yq/libs/hmac/hmac.cpp b/ydb/core/yq/libs/hmac/hmac.cpp
index bbd9ab6c66..a445a7231b 100644
--- a/ydb/core/yq/libs/hmac/hmac.cpp
+++ b/ydb/core/yq/libs/hmac/hmac.cpp
@@ -1,21 +1,21 @@
-#include "hmac.h"
-
-#include <contrib/libs/openssl/include/openssl/hmac.h>
-#include <library/cpp/string_utils/base64/base64.h>
-#include <util/generic/yexception.h>
-
+#include "hmac.h"
+
+#include <contrib/libs/openssl/include/openssl/hmac.h>
+#include <library/cpp/string_utils/base64/base64.h>
+#include <util/generic/yexception.h>
+
namespace NYq {
-TString HmacSha1(const TStringBuf data, const TStringBuf secret) {
- unsigned char md_value[EVP_MAX_MD_SIZE];
- unsigned md_len = 0;
-
- Y_ENSURE(HMAC(EVP_sha1(), secret.data(), secret.size(), (unsigned char*)data.data(), data.size(), md_value, &md_len),
- "could not encrypt data using HMAC SHA1 method");
-
- return TString((char*)md_value, md_len);
-}
-
-TString HmacSha1Base64(const TStringBuf data, const TStringBuf secret) {
- return Base64Encode(HmacSha1(data, secret));
-}
-}
+TString HmacSha1(const TStringBuf data, const TStringBuf secret) {
+ unsigned char md_value[EVP_MAX_MD_SIZE];
+ unsigned md_len = 0;
+
+ Y_ENSURE(HMAC(EVP_sha1(), secret.data(), secret.size(), (unsigned char*)data.data(), data.size(), md_value, &md_len),
+ "could not encrypt data using HMAC SHA1 method");
+
+ return TString((char*)md_value, md_len);
+}
+
+TString HmacSha1Base64(const TStringBuf data, const TStringBuf secret) {
+ return Base64Encode(HmacSha1(data, secret));
+}
+}
diff --git a/ydb/core/yq/libs/hmac/hmac.h b/ydb/core/yq/libs/hmac/hmac.h
index cc4b95b361..bb58e1e804 100644
--- a/ydb/core/yq/libs/hmac/hmac.h
+++ b/ydb/core/yq/libs/hmac/hmac.h
@@ -1,9 +1,9 @@
-#pragma once
-
-#include <util/generic/string.h>
-#include <util/generic/strbuf.h>
-
+#pragma once
+
+#include <util/generic/string.h>
+#include <util/generic/strbuf.h>
+
namespace NYq {
- TString HmacSha1(const TStringBuf data, const TStringBuf secret);
- TString HmacSha1Base64(const TStringBuf data, const TStringBuf secret);
-}
+ TString HmacSha1(const TStringBuf data, const TStringBuf secret);
+ TString HmacSha1Base64(const TStringBuf data, const TStringBuf secret);
+}
diff --git a/ydb/core/yq/libs/hmac/ut/hmac_ut.cpp b/ydb/core/yq/libs/hmac/ut/hmac_ut.cpp
index cdc79edbcb..369cbffbf9 100644
--- a/ydb/core/yq/libs/hmac/ut/hmac_ut.cpp
+++ b/ydb/core/yq/libs/hmac/ut/hmac_ut.cpp
@@ -1,18 +1,18 @@
#include <ydb/core/yq/libs/hmac/hmac.h>
-
-#include <library/cpp/string_utils/base64/base64.h>
-#include <library/cpp/testing/unittest/registar.h>
-
+
+#include <library/cpp/string_utils/base64/base64.h>
+#include <library/cpp/testing/unittest/registar.h>
+
using namespace NYq;
-
-namespace {
- constexpr TStringBuf SECRET = "AAAA";
- constexpr TStringBuf DATA = "BBBB";
-}
-
-Y_UNIT_TEST_SUITE(HmacSha) {
- Y_UNIT_TEST(HmacSha1) {
- UNIT_ASSERT_VALUES_EQUAL("7d54yAPz39TIawdgQBLcawAlXp8=", Base64Encode(HmacSha1(DATA, SECRET)));
- UNIT_ASSERT_VALUES_EQUAL("7d54yAPz39TIawdgQBLcawAlXp8=", HmacSha1Base64(DATA, SECRET));
- }
-}
+
+namespace {
+ constexpr TStringBuf SECRET = "AAAA";
+ constexpr TStringBuf DATA = "BBBB";
+}
+
+Y_UNIT_TEST_SUITE(HmacSha) {
+ Y_UNIT_TEST(HmacSha1) {
+ UNIT_ASSERT_VALUES_EQUAL("7d54yAPz39TIawdgQBLcawAlXp8=", Base64Encode(HmacSha1(DATA, SECRET)));
+ UNIT_ASSERT_VALUES_EQUAL("7d54yAPz39TIawdgQBLcawAlXp8=", HmacSha1Base64(DATA, SECRET));
+ }
+}
diff --git a/ydb/core/yq/libs/hmac/ut/ya.make b/ydb/core/yq/libs/hmac/ut/ya.make
index e6cbf314ba..ea64fc0c6d 100644
--- a/ydb/core/yq/libs/hmac/ut/ya.make
+++ b/ydb/core/yq/libs/hmac/ut/ya.make
@@ -1,13 +1,13 @@
UNITTEST_FOR(ydb/core/yq/libs/hmac)
-
+
OWNER(g:yq)
-
-SRCS(
- hmac_ut.cpp
-)
-
-PEERDIR(
+
+SRCS(
+ hmac_ut.cpp
+)
+
+PEERDIR(
ydb/core/yq/libs/hmac
-)
-
-END()
+)
+
+END()
diff --git a/ydb/core/yq/libs/hmac/ya.make b/ydb/core/yq/libs/hmac/ya.make
index 3a83e0dcb3..d6c9306b22 100644
--- a/ydb/core/yq/libs/hmac/ya.make
+++ b/ydb/core/yq/libs/hmac/ya.make
@@ -1,18 +1,18 @@
OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- hmac.cpp
-)
-
-PEERDIR(
- contrib/libs/openssl
- library/cpp/string_utils/base64
-)
-
-END()
-
-RECURSE_FOR_TESTS(
- ut
-)
+
+LIBRARY()
+
+SRCS(
+ hmac.cpp
+)
+
+PEERDIR(
+ contrib/libs/openssl
+ library/cpp/string_utils/base64
+)
+
+END()
+
+RECURSE_FOR_TESTS(
+ ut
+)
diff --git a/ydb/core/yq/libs/result_formatter/result_formatter.cpp b/ydb/core/yq/libs/result_formatter/result_formatter.cpp
index 394832b7e5..098f2a2758 100644
--- a/ydb/core/yq/libs/result_formatter/result_formatter.cpp
+++ b/ydb/core/yq/libs/result_formatter/result_formatter.cpp
@@ -70,7 +70,7 @@ const NYql::TTypeAnnotationNode* MakeStructType(
NYql::TExprContext& ctx)
{
TVector<const NYql::TItemExprType*> items;
- items.reserve(i.size());
+ items.reserve(i.size());
for (const auto& [k, v] : i) {
items.push_back(ctx.MakeType<NYql::TItemExprType>(k, v));
}
@@ -282,17 +282,17 @@ TType MakeType(NYdb::TTypeParser& parser, TContext& env)
}
struct TTypePair {
- NKikimr::NMiniKQL::TType* MiniKQLType = nullptr;
- const NYql::TTypeAnnotationNode* TypeAnnotation = nullptr;
+ NKikimr::NMiniKQL::TType* MiniKQLType = nullptr;
+ const NYql::TTypeAnnotationNode* TypeAnnotation = nullptr;
};
-TTypePair FormatColumnType(
+TTypePair FormatColumnType(
NJson::TJsonValue& root,
NYdb::TType type,
NKikimr::NMiniKQL::TTypeEnvironment& typeEnv,
NYql::TExprContext& ctx)
{
- TTypePair result;
+ TTypePair result;
NYdb::TTypeParser parser(type);
result.MiniKQLType = MakeType<NKikimr::NMiniKQL::TType*>(parser, typeEnv);
result.TypeAnnotation = MakeType<const NYql::TTypeAnnotationNode*>(parser, ctx);
@@ -335,20 +335,20 @@ void FormatColumnValue(
} // namespace
-TString FormatSchema(const YandexQuery::Schema& schema)
-{
- NYql::TExprContext ctx;
- TVector<std::pair<TString, const NYql::TTypeAnnotationNode*>> typedColumns;
- typedColumns.reserve(schema.column().size());
- for (const auto& c : schema.column()) {
- NYdb::TTypeParser parser(NYdb::TType(c.type()));
- auto typeAnnotation = MakeType<const NYql::TTypeAnnotationNode*>(parser, ctx);
- typedColumns.emplace_back(c.name(), typeAnnotation);
- }
-
+TString FormatSchema(const YandexQuery::Schema& schema)
+{
+ NYql::TExprContext ctx;
+ TVector<std::pair<TString, const NYql::TTypeAnnotationNode*>> typedColumns;
+ typedColumns.reserve(schema.column().size());
+ for (const auto& c : schema.column()) {
+ NYdb::TTypeParser parser(NYdb::TType(c.type()));
+ auto typeAnnotation = MakeType<const NYql::TTypeAnnotationNode*>(parser, ctx);
+ typedColumns.emplace_back(c.name(), typeAnnotation);
+ }
+
return NYql::NCommon::WriteTypeToYson(MakeStructType(typedColumns, ctx), NYson::EYsonFormat::Text);
-}
-
+}
+
void FormatResultSet(NJson::TJsonValue& root, const NYdb::TResultSet& resultSet)
{
NYql::TExprContext ctx;
diff --git a/ydb/core/yq/libs/result_formatter/result_formatter.h b/ydb/core/yq/libs/result_formatter/result_formatter.h
index 031196e050..8f2fd7ef2c 100644
--- a/ydb/core/yq/libs/result_formatter/result_formatter.h
+++ b/ydb/core/yq/libs/result_formatter/result_formatter.h
@@ -11,6 +11,6 @@
namespace NYq {
void FormatResultSet(NJson::TJsonValue& root, const NYdb::TResultSet& resultSet);
-TString FormatSchema(const YandexQuery::Schema& schema);
+TString FormatSchema(const YandexQuery::Schema& schema);
} // namespace NYq
diff --git a/ydb/core/yq/libs/result_formatter/result_formatter_ut.cpp b/ydb/core/yq/libs/result_formatter/result_formatter_ut.cpp
index bebbf68ab3..7b10e85e29 100644
--- a/ydb/core/yq/libs/result_formatter/result_formatter_ut.cpp
+++ b/ydb/core/yq/libs/result_formatter/result_formatter_ut.cpp
@@ -294,7 +294,7 @@ Y_UNIT_TEST_SUITE(ResultFormatter) {
UNIT_ASSERT_C(actual == expected1 || actual == expected2, "expected either " << expected1 << " or " << expected2
<< ", got " << actual);
}
-
+
Y_UNIT_TEST(VariantTuple) {
Ydb::ResultSet rs;
{
@@ -393,25 +393,25 @@ Y_UNIT_TEST_SUITE(ResultFormatter) {
UNIT_ASSERT_VALUES_EQUAL(stream.Str(), expected);
}
- Y_UNIT_TEST(FormatEmptySchema) {
- YandexQuery::Schema s;
- auto result = FormatSchema(s);
- UNIT_ASSERT_VALUES_EQUAL(result, R"(["StructType";[]])");
- }
-
- Y_UNIT_TEST(FormatNonEmptySchema) {
- YandexQuery::Schema s;
- auto& c1 = *s.Addcolumn();
- c1.set_name("key");
- c1.mutable_type()->set_type_id(Ydb::Type::STRING);
-
- auto& c2 = *s.Addcolumn();
- c2.set_name("value");
- Ydb::Type t2;
- t2.set_type_id(Ydb::Type::UINT64);
- *c2.mutable_type()->mutable_optional_type()->mutable_item() = t2;
-
- auto result = FormatSchema(s);
- UNIT_ASSERT_VALUES_EQUAL(result, R"(["StructType";[["key";["DataType";"String"]];["value";["OptionalType";["DataType";"Uint64"]]]]])");
- }
+ Y_UNIT_TEST(FormatEmptySchema) {
+ YandexQuery::Schema s;
+ auto result = FormatSchema(s);
+ UNIT_ASSERT_VALUES_EQUAL(result, R"(["StructType";[]])");
+ }
+
+ Y_UNIT_TEST(FormatNonEmptySchema) {
+ YandexQuery::Schema s;
+ auto& c1 = *s.Addcolumn();
+ c1.set_name("key");
+ c1.mutable_type()->set_type_id(Ydb::Type::STRING);
+
+ auto& c2 = *s.Addcolumn();
+ c2.set_name("value");
+ Ydb::Type t2;
+ t2.set_type_id(Ydb::Type::UINT64);
+ *c2.mutable_type()->mutable_optional_type()->mutable_item() = t2;
+
+ auto result = FormatSchema(s);
+ UNIT_ASSERT_VALUES_EQUAL(result, R"(["StructType";[["key";["DataType";"String"]];["value";["OptionalType";["DataType";"Uint64"]]]]])");
+ }
}
diff --git a/ydb/core/yq/libs/signer/signer.cpp b/ydb/core/yq/libs/signer/signer.cpp
index 79f1abc2e4..7938736fc6 100644
--- a/ydb/core/yq/libs/signer/signer.cpp
+++ b/ydb/core/yq/libs/signer/signer.cpp
@@ -1,31 +1,31 @@
-#include "signer.h"
+#include "signer.h"
#include <ydb/core/yq/libs/hmac/hmac.h>
-
-#include <util/generic/yexception.h>
-#include <util/stream/file.h>
-#include <util/string/builder.h>
-
+
+#include <util/generic/yexception.h>
+#include <util/stream/file.h>
+#include <util/string/builder.h>
+
namespace NYq {
-
-TSigner::TSigner(const TString& hmacSecret)
- : HmacSecret(hmacSecret) {
-}
-
-TString TSigner::Sign(Type type, const TString& value) const {
- TStringBuilder b;
- b << static_cast<unsigned char>(type) << value;
- return HmacSha1Base64(b, HmacSecret);
-}
-
-void TSigner::Verify(Type type, const TString& value, const TString& signature) const {
- const auto expectedSignature = Sign(type, value);
- if (signature != expectedSignature) {
- ythrow yexception() << "Incorrect signature for value: " << value << ", signature: " << signature << ", expected signature: " << expectedSignature;
- }
-}
-
-TSigner::TPtr CreateSignerFromFile(const TString& secretFile) {
- return new TSigner(TFileInput(secretFile).ReadAll());
-}
-
-}
+
+TSigner::TSigner(const TString& hmacSecret)
+ : HmacSecret(hmacSecret) {
+}
+
+TString TSigner::Sign(Type type, const TString& value) const {
+ TStringBuilder b;
+ b << static_cast<unsigned char>(type) << value;
+ return HmacSha1Base64(b, HmacSecret);
+}
+
+void TSigner::Verify(Type type, const TString& value, const TString& signature) const {
+ const auto expectedSignature = Sign(type, value);
+ if (signature != expectedSignature) {
+ ythrow yexception() << "Incorrect signature for value: " << value << ", signature: " << signature << ", expected signature: " << expectedSignature;
+ }
+}
+
+TSigner::TPtr CreateSignerFromFile(const TString& secretFile) {
+ return new TSigner(TFileInput(secretFile).ReadAll());
+}
+
+}
diff --git a/ydb/core/yq/libs/signer/signer.h b/ydb/core/yq/libs/signer/signer.h
index 9c44b9f6b2..8ac29edb28 100644
--- a/ydb/core/yq/libs/signer/signer.h
+++ b/ydb/core/yq/libs/signer/signer.h
@@ -1,31 +1,31 @@
-#pragma once
-
-#include <util/generic/ptr.h>
-#include <util/generic/string.h>
-
+#pragma once
+
+#include <util/generic/ptr.h>
+#include <util/generic/string.h>
+
namespace NYq {
-// keep in sync with token accessor logic
-class TSigner : public TThrRefBase {
-public:
- using TPtr = TIntrusivePtr<TSigner>;
-
- enum Type {
- UNKNOWN = 0,
- SERVICE_ACCOUNT_ID = 1
- };
-
-public:
- explicit TSigner(const TString& hmacSecret);
- TString SignAccountId(const TString& serviceAccountId) const {
- return Sign(SERVICE_ACCOUNT_ID, serviceAccountId);
- }
-
- TString Sign(Type type, const TString& value) const;
- void Verify(Type type, const TString& value, const TString& signature) const;
-
-private:
- const TString HmacSecret;
-};
-
-TSigner::TPtr CreateSignerFromFile(const TString& secretFile);
-}
+// keep in sync with token accessor logic
+class TSigner : public TThrRefBase {
+public:
+ using TPtr = TIntrusivePtr<TSigner>;
+
+ enum Type {
+ UNKNOWN = 0,
+ SERVICE_ACCOUNT_ID = 1
+ };
+
+public:
+ explicit TSigner(const TString& hmacSecret);
+ TString SignAccountId(const TString& serviceAccountId) const {
+ return Sign(SERVICE_ACCOUNT_ID, serviceAccountId);
+ }
+
+ TString Sign(Type type, const TString& value) const;
+ void Verify(Type type, const TString& value, const TString& signature) const;
+
+private:
+ const TString HmacSecret;
+};
+
+TSigner::TPtr CreateSignerFromFile(const TString& secretFile);
+}
diff --git a/ydb/core/yq/libs/signer/ut/signer_ut.cpp b/ydb/core/yq/libs/signer/ut/signer_ut.cpp
index 7841b5780a..82858921d6 100644
--- a/ydb/core/yq/libs/signer/ut/signer_ut.cpp
+++ b/ydb/core/yq/libs/signer/ut/signer_ut.cpp
@@ -1,14 +1,14 @@
#include <ydb/core/yq/libs/signer/signer.h>
-#include <library/cpp/testing/unittest/registar.h>
-
+#include <library/cpp/testing/unittest/registar.h>
+
using namespace NYq;
-
-Y_UNIT_TEST_SUITE(Signer) {
- Y_UNIT_TEST(Basic) {
- TSigner s("abc");
- UNIT_ASSERT_VALUES_EQUAL("b+UDr24riPj5pb7ha2D2AERFvXw=", s.Sign(TSigner::SERVICE_ACCOUNT_ID, "xyz012345"));
- s.Verify(TSigner::SERVICE_ACCOUNT_ID, "xyz012345", "b+UDr24riPj5pb7ha2D2AERFvXw=");
- UNIT_ASSERT_EXCEPTION_CONTAINS(s.Verify(TSigner::UNKNOWN, "xyz012345", "b+UDr24riPj5pb7ha2D2AERFvXw="), yexception, "Incorrect signature for value: xyz012345, signature: b+UDr24riPj5pb7ha2D2AERFvXw=, expected signature: 8O3pYqWEJLvL0TvwQzbEn7dbqzs=");
- UNIT_ASSERT_EXCEPTION_CONTAINS(s.Verify(TSigner::SERVICE_ACCOUNT_ID, "xyz01234", "b+UDr24riPj5pb7ha2D2AERFvXw="), yexception, "Incorrect signature for value: xyz01234, signature: b+UDr24riPj5pb7ha2D2AERFvXw=, expected signature: N637rqjAbKHpvUPeBXRvGkdVKew=");
- }
-}
+
+Y_UNIT_TEST_SUITE(Signer) {
+ Y_UNIT_TEST(Basic) {
+ TSigner s("abc");
+ UNIT_ASSERT_VALUES_EQUAL("b+UDr24riPj5pb7ha2D2AERFvXw=", s.Sign(TSigner::SERVICE_ACCOUNT_ID, "xyz012345"));
+ s.Verify(TSigner::SERVICE_ACCOUNT_ID, "xyz012345", "b+UDr24riPj5pb7ha2D2AERFvXw=");
+ UNIT_ASSERT_EXCEPTION_CONTAINS(s.Verify(TSigner::UNKNOWN, "xyz012345", "b+UDr24riPj5pb7ha2D2AERFvXw="), yexception, "Incorrect signature for value: xyz012345, signature: b+UDr24riPj5pb7ha2D2AERFvXw=, expected signature: 8O3pYqWEJLvL0TvwQzbEn7dbqzs=");
+ UNIT_ASSERT_EXCEPTION_CONTAINS(s.Verify(TSigner::SERVICE_ACCOUNT_ID, "xyz01234", "b+UDr24riPj5pb7ha2D2AERFvXw="), yexception, "Incorrect signature for value: xyz01234, signature: b+UDr24riPj5pb7ha2D2AERFvXw=, expected signature: N637rqjAbKHpvUPeBXRvGkdVKew=");
+ }
+}
diff --git a/ydb/core/yq/libs/signer/ut/ya.make b/ydb/core/yq/libs/signer/ut/ya.make
index 2ead7125c4..e293f494c9 100644
--- a/ydb/core/yq/libs/signer/ut/ya.make
+++ b/ydb/core/yq/libs/signer/ut/ya.make
@@ -1,13 +1,13 @@
UNITTEST_FOR(ydb/core/yq/libs/signer)
-
+
OWNER(g:yq)
-
-SRCS(
- signer_ut.cpp
-)
-
-PEERDIR(
+
+SRCS(
+ signer_ut.cpp
+)
+
+PEERDIR(
ydb/core/yq/libs/signer
-)
-
-END()
+)
+
+END()
diff --git a/ydb/core/yq/libs/signer/ya.make b/ydb/core/yq/libs/signer/ya.make
index 9faf39df7b..dcceb1d861 100644
--- a/ydb/core/yq/libs/signer/ya.make
+++ b/ydb/core/yq/libs/signer/ya.make
@@ -1,17 +1,17 @@
OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- signer.cpp
-)
-
-PEERDIR(
+
+LIBRARY()
+
+SRCS(
+ signer.cpp
+)
+
+PEERDIR(
ydb/core/yq/libs/hmac
-)
-
-END()
-
-RECURSE_FOR_TESTS(
- ut
-)
+)
+
+END()
+
+RECURSE_FOR_TESTS(
+ ut
+)
diff --git a/ydb/core/yq/libs/ya.make b/ydb/core/yq/libs/ya.make
index ccc88a55b6..44ba0ce687 100644
--- a/ydb/core/yq/libs/ya.make
+++ b/ydb/core/yq/libs/ya.make
@@ -21,7 +21,7 @@ RECURSE(
mock
pretty_printers
private_client
- read_rule
+ read_rule
result_formatter
shared_resources
signer
diff --git a/ydb/library/aclib/protos/aclib.proto b/ydb/library/aclib/protos/aclib.proto
index 4978977d54..f565428299 100644
--- a/ydb/library/aclib/protos/aclib.proto
+++ b/ydb/library/aclib/protos/aclib.proto
@@ -1,7 +1,7 @@
package NACLibProto;
option go_package = "a.yandex-team.ru/ydb/library/aclib/protos;aclibpb";
-
+
message TACE {
optional uint32 AccessType = 1;
optional uint32 AccessRight = 2;
diff --git a/ydb/library/aclib/protos/ya.make b/ydb/library/aclib/protos/ya.make
index 59135589cc..6b8165eb4b 100644
--- a/ydb/library/aclib/protos/ya.make
+++ b/ydb/library/aclib/protos/ya.make
@@ -5,7 +5,7 @@ OWNER(
g:kikimr
)
-INCLUDE_TAGS(GO_PROTO)
+INCLUDE_TAGS(GO_PROTO)
SRCS(
aclib.proto
diff --git a/ydb/library/mkql_proto/mkql_proto.cpp b/ydb/library/mkql_proto/mkql_proto.cpp
index 53d7722dee..c0e9972fd1 100644
--- a/ydb/library/mkql_proto/mkql_proto.cpp
+++ b/ydb/library/mkql_proto/mkql_proto.cpp
@@ -422,7 +422,7 @@ Y_FORCE_INLINE void HandleKindDataExport(const TType* type, const NUdf::TUnboxed
}
}
-void ExportValueToProtoImpl(TType* type, const NUdf::TUnboxedValuePod& value, NKikimrMiniKQL::TValue& res, const TVector<ui32>* columnOrder = nullptr) {
+void ExportValueToProtoImpl(TType* type, const NUdf::TUnboxedValuePod& value, NKikimrMiniKQL::TValue& res, const TVector<ui32>* columnOrder = nullptr) {
switch (type->GetKind()) {
case TType::EKind::Void:
case TType::EKind::EmptyList:
@@ -465,9 +465,9 @@ void ExportValueToProtoImpl(TType* type, const NUdf::TUnboxedValuePod& value, NK
auto structType = static_cast<TStructType*>(type);
res.MutableStruct()->Reserve(structType->GetMembersCount());
for (ui32 index = 0; index < structType->GetMembersCount(); ++index) {
- auto memberIndex = (!columnOrder || columnOrder->empty()) ? index : (*columnOrder)[index];
- auto memberType = structType->GetMemberType(memberIndex);
- ExportValueToProtoImpl(memberType, value.GetElement(memberIndex), *res.MutableStruct()->Add());
+ auto memberIndex = (!columnOrder || columnOrder->empty()) ? index : (*columnOrder)[index];
+ auto memberType = structType->GetMemberType(memberIndex);
+ ExportValueToProtoImpl(memberType, value.GetElement(memberIndex), *res.MutableStruct()->Add());
}
break;
@@ -518,7 +518,7 @@ void ExportValueToProtoImpl(TType* type, const NUdf::TUnboxedValuePod& value, NK
}
}
-void ExportValueToProtoImpl(TType* type, const NUdf::TUnboxedValuePod& value, Ydb::Value& res, const TVector<ui32>* columnOrder = nullptr) {
+void ExportValueToProtoImpl(TType* type, const NUdf::TUnboxedValuePod& value, Ydb::Value& res, const TVector<ui32>* columnOrder = nullptr) {
switch (type->GetKind()) {
case TType::EKind::Void:
case TType::EKind::EmptyList:
@@ -573,9 +573,9 @@ void ExportValueToProtoImpl(TType* type, const NUdf::TUnboxedValuePod& value, Yd
auto structType = static_cast<TStructType*>(type);
res.mutable_items()->Reserve(structType->GetMembersCount());
for (ui32 index = 0; index < structType->GetMembersCount(); ++index) {
- auto memberIndex = (!columnOrder || columnOrder->empty()) ? index : (*columnOrder)[index];
- auto memberType = structType->GetMemberType(memberIndex);
- ExportValueToProtoImpl(memberType, value.GetElement(memberIndex), *res.mutable_items()->Add());
+ auto memberIndex = (!columnOrder || columnOrder->empty()) ? index : (*columnOrder)[index];
+ auto memberType = structType->GetMemberType(memberIndex);
+ ExportValueToProtoImpl(memberType, value.GetElement(memberIndex), *res.mutable_items()->Add());
}
break;
@@ -752,8 +752,8 @@ void ExportTypeToProto(TType* type, Ydb::Type& res) {
ExportTypeToProtoImpl(type, res);
}
-void ExportValueToProto(TType* type, const NUdf::TUnboxedValuePod& value, Ydb::Value& res, const TVector<ui32>* columnOrder) {
- ExportValueToProtoImpl(type, value, res, columnOrder);
+void ExportValueToProto(TType* type, const NUdf::TUnboxedValuePod& value, Ydb::Value& res, const TVector<ui32>* columnOrder) {
+ ExportValueToProtoImpl(type, value, res, columnOrder);
}
template <typename ValueType> class TBufferArray {
@@ -1179,8 +1179,8 @@ void ExportTypeToProto(TType* type, NKikimrMiniKQL::TType& res) {
ExportTypeToProtoImpl(type, res);
}
-void ExportValueToProto(TType* type, const NUdf::TUnboxedValuePod& value, NKikimrMiniKQL::TValue& res, const TVector<ui32>* columnOrder) {
- ExportValueToProtoImpl(type, value, res, columnOrder);
+void ExportValueToProto(TType* type, const NUdf::TUnboxedValuePod& value, NKikimrMiniKQL::TValue& res, const TVector<ui32>* columnOrder) {
+ ExportValueToProtoImpl(type, value, res, columnOrder);
}
diff --git a/ydb/library/mkql_proto/mkql_proto.h b/ydb/library/mkql_proto/mkql_proto.h
index 716f8530d3..57b913552d 100644
--- a/ydb/library/mkql_proto/mkql_proto.h
+++ b/ydb/library/mkql_proto/mkql_proto.h
@@ -10,12 +10,12 @@ namespace NKikimr::NMiniKQL {
class THolderFactory;
void ExportTypeToProto(TType* type, NKikimrMiniKQL::TType& res);
-void ExportValueToProto(TType* type, const NUdf::TUnboxedValuePod& value, NKikimrMiniKQL::TValue& res, const TVector<ui32>* columnOrder = nullptr);
+void ExportValueToProto(TType* type, const NUdf::TUnboxedValuePod& value, NKikimrMiniKQL::TValue& res, const TVector<ui32>* columnOrder = nullptr);
void ExportPrimitiveTypeToProto(ui32 schemeType, Ydb::Type& output);
void ExportTypeToProto(TType* type, Ydb::Type& res);
-void ExportValueToProto(TType* type, const NUdf::TUnboxedValuePod& value, Ydb::Value& res, const TVector<ui32>* columnOrder = nullptr);
+void ExportValueToProto(TType* type, const NUdf::TUnboxedValuePod& value, Ydb::Value& res, const TVector<ui32>* columnOrder = nullptr);
TType* ImportTypeFromProto(const NKikimrMiniKQL::TType& type, const TTypeEnvironment& env);
diff --git a/ydb/library/mkql_proto/mkql_proto_ut.cpp b/ydb/library/mkql_proto/mkql_proto_ut.cpp
index fdda085f18..1b8adfc94b 100644
--- a/ydb/library/mkql_proto/mkql_proto_ut.cpp
+++ b/ydb/library/mkql_proto/mkql_proto_ut.cpp
@@ -506,71 +506,71 @@ Variant {
"}\n");
}
- Y_UNIT_TEST(TestExportStructEmptyColumnOrder) {
- const TVector<ui32> emptyColumnOrder;
- TestExportValue<NKikimrMiniKQL::TValue>([](TProgramBuilder& pgmBuilder) {
- std::vector<std::pair<std::string_view, TRuntimeNode>> items;
- items.push_back({ "y", pgmBuilder.NewDataLiteral<NUdf::EDataSlot::String>("abc") });
- items.push_back({ "x", pgmBuilder.NewDataLiteral<i32>(42) });
- auto pgmReturn = pgmBuilder.NewStruct(items);
- return pgmReturn;
- },
- // struct fields are in alpha order
- "Struct {\n"
- " Int32: 42\n"
- "}\n"
- "Struct {\n"
- " Bytes: \"abc\"\n"
- "}\n",
- &emptyColumnOrder);
- }
-
- Y_UNIT_TEST(TestExportStructWithColumnOrder) {
- const TVector<ui32> columnOrder = {1, 0};
- TestExportValue<NKikimrMiniKQL::TValue>([](TProgramBuilder& pgmBuilder) {
- std::vector<std::pair<std::string_view, TRuntimeNode>> items;
- items.push_back({ "x", pgmBuilder.NewDataLiteral<i32>(42) });
- items.push_back({ "y", pgmBuilder.NewDataLiteral<NUdf::EDataSlot::String>("abc") });
- auto pgmReturn = pgmBuilder.NewStruct(items);
- return pgmReturn;
- },
- "Struct {\n"
- " Bytes: \"abc\"\n"
- "}\n"
- "Struct {\n"
- " Int32: 42\n"
- "}\n",
- &columnOrder);
- }
-
- Y_UNIT_TEST(TestExportStructColumnOrderAffectsTopLevelOnly) {
- const TVector<ui32> columnOrder = {1, 0};
- TestExportValue<NKikimrMiniKQL::TValue>([](TProgramBuilder& pgmBuilder) {
- std::vector<std::pair<std::string_view, TRuntimeNode>> items1;
- items1.push_back({ "x", pgmBuilder.NewDataLiteral<i32>(42) });
- items1.push_back({ "y", pgmBuilder.NewDataLiteral<NUdf::EDataSlot::String>("abc") });
- auto struct1 = pgmBuilder.NewStruct(items1);
-
- std::vector<std::pair<std::string_view, TRuntimeNode>> items2;
- items2.push_back({ "x", pgmBuilder.NewDataLiteral<i32>(777) });
- items2.push_back({ "y", struct1 });
- auto pgmReturn = pgmBuilder.NewStruct(items2);
- return pgmReturn;
- },
- "Struct {\n"
- " Struct {\n"
- " Int32: 42\n"
- " }\n"
- " Struct {\n"
- " Bytes: \"abc\"\n"
- " }\n"
- "}\n"
- "Struct {\n"
- " Int32: 777\n"
- "}\n",
- &columnOrder);
- }
-
+ Y_UNIT_TEST(TestExportStructEmptyColumnOrder) {
+ const TVector<ui32> emptyColumnOrder;
+ TestExportValue<NKikimrMiniKQL::TValue>([](TProgramBuilder& pgmBuilder) {
+ std::vector<std::pair<std::string_view, TRuntimeNode>> items;
+ items.push_back({ "y", pgmBuilder.NewDataLiteral<NUdf::EDataSlot::String>("abc") });
+ items.push_back({ "x", pgmBuilder.NewDataLiteral<i32>(42) });
+ auto pgmReturn = pgmBuilder.NewStruct(items);
+ return pgmReturn;
+ },
+ // struct fields are in alpha order
+ "Struct {\n"
+ " Int32: 42\n"
+ "}\n"
+ "Struct {\n"
+ " Bytes: \"abc\"\n"
+ "}\n",
+ &emptyColumnOrder);
+ }
+
+ Y_UNIT_TEST(TestExportStructWithColumnOrder) {
+ const TVector<ui32> columnOrder = {1, 0};
+ TestExportValue<NKikimrMiniKQL::TValue>([](TProgramBuilder& pgmBuilder) {
+ std::vector<std::pair<std::string_view, TRuntimeNode>> items;
+ items.push_back({ "x", pgmBuilder.NewDataLiteral<i32>(42) });
+ items.push_back({ "y", pgmBuilder.NewDataLiteral<NUdf::EDataSlot::String>("abc") });
+ auto pgmReturn = pgmBuilder.NewStruct(items);
+ return pgmReturn;
+ },
+ "Struct {\n"
+ " Bytes: \"abc\"\n"
+ "}\n"
+ "Struct {\n"
+ " Int32: 42\n"
+ "}\n",
+ &columnOrder);
+ }
+
+ Y_UNIT_TEST(TestExportStructColumnOrderAffectsTopLevelOnly) {
+ const TVector<ui32> columnOrder = {1, 0};
+ TestExportValue<NKikimrMiniKQL::TValue>([](TProgramBuilder& pgmBuilder) {
+ std::vector<std::pair<std::string_view, TRuntimeNode>> items1;
+ items1.push_back({ "x", pgmBuilder.NewDataLiteral<i32>(42) });
+ items1.push_back({ "y", pgmBuilder.NewDataLiteral<NUdf::EDataSlot::String>("abc") });
+ auto struct1 = pgmBuilder.NewStruct(items1);
+
+ std::vector<std::pair<std::string_view, TRuntimeNode>> items2;
+ items2.push_back({ "x", pgmBuilder.NewDataLiteral<i32>(777) });
+ items2.push_back({ "y", struct1 });
+ auto pgmReturn = pgmBuilder.NewStruct(items2);
+ return pgmReturn;
+ },
+ "Struct {\n"
+ " Struct {\n"
+ " Int32: 42\n"
+ " }\n"
+ " Struct {\n"
+ " Bytes: \"abc\"\n"
+ " }\n"
+ "}\n"
+ "Struct {\n"
+ " Int32: 777\n"
+ "}\n",
+ &columnOrder);
+ }
+
Y_UNIT_TEST(TestExportDict) {
TestExportValue<NKikimrMiniKQL::TValue>([](TProgramBuilder& pgmBuilder) {
auto dictType = pgmBuilder.NewDictType(pgmBuilder.NewDataType(NUdf::TDataType<i32>::Id),
diff --git a/ydb/library/mkql_proto/ut/helpers/helpers.h b/ydb/library/mkql_proto/ut/helpers/helpers.h
index e5094e8085..dd9c1f8513 100644
--- a/ydb/library/mkql_proto/ut/helpers/helpers.h
+++ b/ydb/library/mkql_proto/ut/helpers/helpers.h
@@ -1,5 +1,5 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/minikql/mkql_program_builder.h>
#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins.h>
@@ -31,7 +31,7 @@ void TestExportType(std::function<TRuntimeNode(TProgramBuilder& pgmBuilder)> set
}
template <typename TProtoValue>
-void TestExportValue(std::function<TRuntimeNode(TProgramBuilder& pgmBuilder)> setup, const TString& expectedString, const TVector<ui32>* columnOrder = nullptr) {
+void TestExportValue(std::function<TRuntimeNode(TProgramBuilder& pgmBuilder)> setup, const TString& expectedString, const TVector<ui32>* columnOrder = nullptr) {
auto functionRegistry = CreateFunctionRegistry(CreateBuiltinRegistry());
auto randomProvider = CreateDeterministicRandomProvider(1);
auto timeProvider = CreateDeterministicTimeProvider(1);
@@ -49,7 +49,7 @@ void TestExportValue(std::function<TRuntimeNode(TProgramBuilder& pgmBuilder)> se
auto pattern = MakeComputationPattern(explorer, pgmReturn, {}, opts);
auto graph = pattern->Clone(opts.ToComputationOptions(*randomProvider, *timeProvider));
TProtoValue res;
- ExportValueToProto(pgmReturn.GetStaticType(), graph->GetValue(), res, columnOrder);
+ ExportValueToProto(pgmReturn.GetStaticType(), graph->GetValue(), res, columnOrder);
using ::google::protobuf::TextFormat;
TString str;
TextFormat::PrintToString(res, &str);
diff --git a/ydb/library/yql/ast/yql_ast_ut.cpp b/ydb/library/yql/ast/yql_ast_ut.cpp
index 23e140653d..7124ac94ae 100644
--- a/ydb/library/yql/ast/yql_ast_ut.cpp
+++ b/ydb/library/yql/ast/yql_ast_ut.cpp
@@ -349,15 +349,15 @@ Y_UNIT_TEST_SUITE(TParseYqlAst) {
"string@@)";
ParseAndPrint(s4, s4);
- TString s5 = "(@@\n"
- "one@\n"
- "two@@@@\n"
- "four@@@@@@@@\n"
- "@@@@two\n"
- "@one\n"
- "@@)";
-
- TAstParseResult ast = ParseAst(s5);
+ TString s5 = "(@@\n"
+ "one@\n"
+ "two@@@@\n"
+ "four@@@@@@@@\n"
+ "@@@@two\n"
+ "@one\n"
+ "@@)";
+
+ TAstParseResult ast = ParseAst(s5);
UNIT_ASSERT(ast.IsOk());
UNIT_ASSERT_VALUES_EQUAL(ast.Root->GetChildrenCount(), 1);
@@ -372,9 +372,9 @@ Y_UNIT_TEST_SUITE(TParseYqlAst) {
"@@two\n"
"@one\n";
UNIT_ASSERT_STRINGS_EQUAL(atom->GetContent(), expected);
-
- TString printResult = ast.Root->ToString();
- UNIT_ASSERT_STRINGS_EQUAL(s5, printResult);
+
+ TString printResult = ast.Root->ToString();
+ UNIT_ASSERT_STRINGS_EQUAL(s5, printResult);
}
Y_UNIT_TEST(UnicodePrettyPrint) {
diff --git a/ydb/library/yql/ast/yql_expr.cpp b/ydb/library/yql/ast/yql_expr.cpp
index 82f6c5812a..87278567b2 100644
--- a/ydb/library/yql/ast/yql_expr.cpp
+++ b/ydb/library/yql/ast/yql_expr.cpp
@@ -885,39 +885,39 @@ namespace {
return {lambda};
}
- bool CompileSetPackageVersion(const TAstNode& node, TContext& ctx) {
- if (node.GetChildrenCount() != 3) {
- ctx.AddError(node, "Expected list of size 3");
- return false;
- }
-
- const auto name = node.GetChild(1);
- if (name->IsAtom() || name->GetChildrenCount() != 2 || !name->GetChild(0)->IsAtom() || !name->GetChild(1)->IsAtom() ||
+ bool CompileSetPackageVersion(const TAstNode& node, TContext& ctx) {
+ if (node.GetChildrenCount() != 3) {
+ ctx.AddError(node, "Expected list of size 3");
+ return false;
+ }
+
+ const auto name = node.GetChild(1);
+ if (name->IsAtom() || name->GetChildrenCount() != 2 || !name->GetChild(0)->IsAtom() || !name->GetChild(1)->IsAtom() ||
name->GetChild(0)->GetContent() != TStringBuf("quote")) {
- ctx.AddError(*name, "Expected quoted atom for package name");
- return false;
- }
-
- const auto versionNode = node.GetChild(2);
- if (versionNode->IsAtom() || versionNode->GetChildrenCount() != 2 || !versionNode->GetChild(0)->IsAtom() || !versionNode->GetChild(1)->IsAtom() ||
+ ctx.AddError(*name, "Expected quoted atom for package name");
+ return false;
+ }
+
+ const auto versionNode = node.GetChild(2);
+ if (versionNode->IsAtom() || versionNode->GetChildrenCount() != 2 || !versionNode->GetChild(0)->IsAtom() || !versionNode->GetChild(1)->IsAtom() ||
versionNode->GetChild(0)->GetContent() != TStringBuf("quote")) {
ctx.AddError(*versionNode, "Expected quoted atom for package version");
- return false;
- }
-
- ui32 version = 0;
- if (!versionNode->GetChild(1)->IsAtom() || !TryFromString(versionNode->GetChild(1)->GetContent(), version)) {
- ctx.AddError(*versionNode, TString("Expected package version as number, bad content ") + versionNode->GetChild(1)->GetContent());
- return false;
- }
-
- if (ctx.ModuleResolver && !ctx.ModuleResolver->SetPackageDefaultVersion(TString(name->GetChild(1)->GetContent()), version)) {
- ctx.AddError(*versionNode, TStringBuilder() << "Unable to specify version " << version << " for package " << name->GetChild(1)->GetContent());
- return false;
- }
- return true;
- }
-
+ return false;
+ }
+
+ ui32 version = 0;
+ if (!versionNode->GetChild(1)->IsAtom() || !TryFromString(versionNode->GetChild(1)->GetContent(), version)) {
+ ctx.AddError(*versionNode, TString("Expected package version as number, bad content ") + versionNode->GetChild(1)->GetContent());
+ return false;
+ }
+
+ if (ctx.ModuleResolver && !ctx.ModuleResolver->SetPackageDefaultVersion(TString(name->GetChild(1)->GetContent()), version)) {
+ ctx.AddError(*versionNode, TStringBuilder() << "Unable to specify version " << version << " for package " << name->GetChild(1)->GetContent());
+ return false;
+ }
+ return true;
+ }
+
TExprNode::TPtr CompileBind(const TAstNode& node, TContext& ctx) {
if (node.GetChildrenCount() != 3) {
ctx.AddError(node, "Expected list of size 3");
@@ -1177,7 +1177,7 @@ namespace {
if (!CompileLibraryDef(*node, ctx))
return {};
} else if (firstChild->GetContent() == TStringBuf("set_package_version")) {
- if (!CompileSetPackageVersion(*node, ctx))
+ if (!CompileSetPackageVersion(*node, ctx))
return {};
}
}
@@ -1240,14 +1240,14 @@ namespace {
continue;
} else if (firstChild->GetContent() == TStringBuf("set_package_version")) {
- if (!topLevel) {
- ctx.AddError(*firstChild, "set_package_version statements are only allowed on top level block");
+ if (!topLevel) {
+ ctx.AddError(*firstChild, "set_package_version statements are only allowed on top level block");
return {};
- }
-
- continue;
+ }
+
+ continue;
} else {
- ctx.AddError(*firstChild, ToString("expected either let, return or import, but have ") + firstChild->GetContent());
+ ctx.AddError(*firstChild, ToString("expected either let, return or import, but have ") + firstChild->GetContent());
return {};
}
}
diff --git a/ydb/library/yql/ast/yql_expr.h b/ydb/library/yql/ast/yql_expr.h
index d6eb544f9a..613b2dccc3 100644
--- a/ydb/library/yql/ast/yql_expr.h
+++ b/ydb/library/yql/ast/yql_expr.h
@@ -2246,7 +2246,7 @@ struct TExprContext : private TNonCopyable {
TSingletonTypeCache SingletonTypeCache;
std::unordered_set<const TTypeAnnotationNode*, TTypeAnnotationNode::THash, TTypeAnnotationNode::TEqual> TypeSet;
std::unordered_set<const TConstraintNode*, TConstraintNode::THash, TConstraintNode::TEqual> ConstraintSet;
- std::unordered_map<const TTypeAnnotationNode*, TExprNode::TPtr> TypeAsNodeCache;
+ std::unordered_map<const TTypeAnnotationNode*, TExprNode::TPtr> TypeAsNodeCache;
std::unordered_set<TStringBuf, THash<TStringBuf>> DisabledConstraints;
ui64 NextUniqueId = 0;
@@ -2264,7 +2264,7 @@ struct TExprContext : private TNonCopyable {
bool Frozen;
- explicit TExprContext(ui64 nextUniqueId = 0ULL);
+ explicit TExprContext(ui64 nextUniqueId = 0ULL);
~TExprContext();
ui64 AllocateNextUniqueId() {
diff --git a/ydb/library/yql/ast/yql_expr_builder.cpp b/ydb/library/yql/ast/yql_expr_builder.cpp
index 4b22308b99..7bd5e2e81a 100644
--- a/ydb/library/yql/ast/yql_expr_builder.cpp
+++ b/ydb/library/yql/ast/yql_expr_builder.cpp
@@ -132,7 +132,7 @@ TExprNodeBuilder& TExprNodeBuilder::Add(ui32 index, const TExprNode::TPtr& child
Y_ENSURE(Container->ChildrenSize() == index + (Container->IsLambda() ? 1U : 0U),
"Container position mismatch, expected: " << Container->ChildrenSize() <<
", actual: " << index);
- Y_ENSURE(child, "child should not be nullptr");
+ Y_ENSURE(child, "child should not be nullptr");
Container->Children_.push_back(child);
return *this;
}
@@ -142,7 +142,7 @@ TExprNodeBuilder& TExprNodeBuilder::Add(ui32 index, TExprNode::TPtr&& child) {
Y_ENSURE(Container->ChildrenSize() == index + (Container->IsLambda() ? 1U : 0U),
"Container position mismatch, expected: " << Container->ChildrenSize() <<
", actual: " << index);
- Y_ENSURE(child, "child should not be nullptr");
+ Y_ENSURE(child, "child should not be nullptr");
Container->Children_.push_back(std::move(child));
return *this;
}
diff --git a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
index a32a6c3dab..f3eb4a5bd9 100644
--- a/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
+++ b/ydb/library/yql/core/common_opt/yql_co_simple1.cpp
@@ -632,21 +632,21 @@ TExprNode::TPtr ExpandExtract(const TExprNode::TPtr& node, TExprContext& ctx) {
.Seal().Build();
}
-std::vector<TExprNode::TListType> GroupNodeChildrenByType(const TExprNode::TPtr& node) {
- std::vector<TExprNode::TListType> groups;
- std::map<const TTypeAnnotationNode*, ui32> typeToGroup;
- for (ui32 i = 0; i < node->ChildrenSize(); ++i) {
- auto child = node->Child(i);
- auto groupIndex = typeToGroup.emplace(child->GetTypeAnn(), groups.size()).first->second;
- if (groupIndex >= groups.size()) {
- YQL_ENSURE(groupIndex == groups.size());
- groups.resize(groupIndex + 1);
- }
- groups[groupIndex].push_back(child);
- }
- return groups;
-}
-
+std::vector<TExprNode::TListType> GroupNodeChildrenByType(const TExprNode::TPtr& node) {
+ std::vector<TExprNode::TListType> groups;
+ std::map<const TTypeAnnotationNode*, ui32> typeToGroup;
+ for (ui32 i = 0; i < node->ChildrenSize(); ++i) {
+ auto child = node->Child(i);
+ auto groupIndex = typeToGroup.emplace(child->GetTypeAnn(), groups.size()).first->second;
+ if (groupIndex >= groups.size()) {
+ YQL_ENSURE(groupIndex == groups.size());
+ groups.resize(groupIndex + 1);
+ }
+ groups[groupIndex].push_back(child);
+ }
+ return groups;
+}
+
template <bool Ordered>
TExprNode::TPtr ExpandUnionAll(const TExprNode::TPtr& node, TExprContext& ctx, TOptimizeContext& optCtx) {
YQL_CLOG(DEBUG, Core) << "Expand " << node->Content();
@@ -659,7 +659,7 @@ TExprNode::TPtr ExpandUnionAll(const TExprNode::TPtr& node, TExprContext& ctx, T
auto remapList = [&ctx, &nulls, resultStructType](TExprNode::TPtr input, const TTypeAnnotationNode* inputType) -> TExprNode::TPtr {
auto pos = input->Pos();
auto arg = ctx.NewArgument(pos, "item");
- auto inputStructType = inputType->Cast<TListExprType>()->GetItemType()->Cast<TStructExprType>();
+ auto inputStructType = inputType->Cast<TListExprType>()->GetItemType()->Cast<TStructExprType>();
TExprNode::TListType bodyItems;
ui32 resultIndex = 0;
for (auto& item : resultStructType->GetItems()) {
@@ -724,8 +724,8 @@ TExprNode::TPtr ExpandUnionAll(const TExprNode::TPtr& node, TExprContext& ctx, T
} else {
auto pos = group[0]->Pos();
remapped = remapList(ctx.NewCallable(pos, Ordered ? "Merge" : "Extend", std::move(group)), typeAnn);
- }
-
+ }
+
if (!remapped) {
return node;
}
diff --git a/ydb/library/yql/core/facade/yql_facade.cpp b/ydb/library/yql/core/facade/yql_facade.cpp
index b74abc1c34..e0aae6ab80 100644
--- a/ydb/library/yql/core/facade/yql_facade.cpp
+++ b/ydb/library/yql/core/facade/yql_facade.cpp
@@ -51,8 +51,8 @@ public:
: Storage_(storage)
{}
- TString Load(const TString& url, const TString& token) override {
- auto file = Storage_->PutUrl(url, token);
+ TString Load(const TString& url, const TString& token) override {
+ auto file = Storage_->PutUrl(url, token);
return TFileInput(file->GetPath()).ReadAll();
}
@@ -86,26 +86,26 @@ TProgram::TStatus SyncExecution(
return status;
}
-std::function<TMaybe<TString>(const TString&)> BuildCompositeTokenResolver(TVector<std::function<TMaybe<TString>(const TString&)>>&& children) {
- if (children.empty()) {
- return {};
- }
-
- if (children.size() == 1) {
- return std::move(children[0]);
- }
-
- return[children = std::move(children)](const TString& url)->TMaybe<TString> {
- for (auto& c : children) {
- if (auto r = c(url)) {
- return r;
- }
- }
-
- return Nothing();
- };
-}
-
+std::function<TMaybe<TString>(const TString&)> BuildCompositeTokenResolver(TVector<std::function<TMaybe<TString>(const TString&)>>&& children) {
+ if (children.empty()) {
+ return {};
+ }
+
+ if (children.size() == 1) {
+ return std::move(children[0]);
+ }
+
+ return[children = std::move(children)](const TString& url)->TMaybe<TString> {
+ for (auto& c : children) {
+ if (auto r = c(url)) {
+ return r;
+ }
+ }
+
+ return Nothing();
+ };
+}
+
} // namspace
///////////////////////////////////////////////////////////////////////////////
@@ -135,12 +135,12 @@ void TProgramFactory::EnableRangeComputeFor() {
EnableRangeComputeFor_ = true;
}
-void TProgramFactory::AddUserDataTable(const TUserDataTable& userDataTable) {
- for (auto& p : userDataTable) {
- if (!UserDataTable_.emplace(p).second) {
- ythrow yexception() << "UserDataTable already has user data block with key " << p.first;
- }
- }
+void TProgramFactory::AddUserDataTable(const TUserDataTable& userDataTable) {
+ for (auto& p : userDataTable) {
+ if (!UserDataTable_.emplace(p).second) {
+ ythrow yexception() << "UserDataTable already has user data block with key " << p.first;
+ }
+ }
}
void TProgramFactory::AddCredentialsTable(TCredentialTablePtr credentialTable) {
@@ -163,11 +163,11 @@ void TProgramFactory::SetUdfResolver(IUdfResolver::TPtr udfResolver) {
UdfResolver_ = udfResolver;
}
-void TProgramFactory::SetUdfIndex(TUdfIndex::TPtr udfIndex, TUdfIndexPackageSet::TPtr udfIndexPackageSet) {
- UdfIndex_ = std::move(udfIndex);
- UdfIndexPackageSet_ = std::move(udfIndexPackageSet);
-}
-
+void TProgramFactory::SetUdfIndex(TUdfIndex::TPtr udfIndex, TUdfIndexPackageSet::TPtr udfIndexPackageSet) {
+ UdfIndex_ = std::move(udfIndex);
+ UdfIndexPackageSet_ = std::move(udfIndexPackageSet);
+}
+
void TProgramFactory::SetFileStorage(TFileStoragePtr fileStorage) {
FileStorage_ = fileStorage;
}
@@ -189,15 +189,15 @@ TProgramPtr TProgramFactory::Create(
CreateDeterministicRandomProvider(1) : CreateDefaultRandomProvider();
auto timeProvider = UseRepeatableRandomAndTimeProviders_ ?
CreateDeterministicTimeProvider(10000000) : CreateDefaultTimeProvider();
-
- TUdfIndex::TPtr udfIndex = UdfIndex_ ? UdfIndex_->Clone() : nullptr;
- TUdfIndexPackageSet::TPtr udfIndexPackageSet = UdfIndexPackageSet_ ? UdfIndexPackageSet_->Clone() : nullptr;
- IModuleResolver::TPtr moduleResolver = Modules_ ? Modules_->CreateMutableChild() : nullptr;
- auto udfResolver = udfIndex ? NCommon::CreateUdfResolverWithIndex(udfIndex, UdfResolver_, FileStorage_) : UdfResolver_;
-
- // make UserDataTable_ copy here
+
+ TUdfIndex::TPtr udfIndex = UdfIndex_ ? UdfIndex_->Clone() : nullptr;
+ TUdfIndexPackageSet::TPtr udfIndexPackageSet = UdfIndexPackageSet_ ? UdfIndexPackageSet_->Clone() : nullptr;
+ IModuleResolver::TPtr moduleResolver = Modules_ ? Modules_->CreateMutableChild() : nullptr;
+ auto udfResolver = udfIndex ? NCommon::CreateUdfResolverWithIndex(udfIndex, UdfResolver_, FileStorage_) : UdfResolver_;
+
+ // make UserDataTable_ copy here
return new TProgram(FunctionRegistry_, randomProvider, timeProvider, NextUniqueId_, DataProvidersInit_,
- UserDataTable_, CredentialTables_, UserCredentials_, moduleResolver, udfResolver, udfIndex, udfIndexPackageSet, FileStorage_,
+ UserDataTable_, CredentialTables_, UserCredentials_, moduleResolver, udfResolver, udfIndex, udfIndexPackageSet, FileStorage_,
GatewaysConfig_, filename, sourceCode, sessionId, Runner_, EnableRangeComputeFor_);
}
@@ -210,13 +210,13 @@ TProgram::TProgram(
const TIntrusivePtr<ITimeProvider> timeProvider,
ui64 nextUniqueId,
const TVector<TDataProviderInitializer>& dataProvidersInit,
- const TUserDataTable& userDataTable,
+ const TUserDataTable& userDataTable,
const TVector<TCredentialTablePtr>& credentialTables,
const TUserCredentials& userCredentials,
const IModuleResolver::TPtr& modules,
const IUdfResolver::TPtr& udfResolver,
- const TUdfIndex::TPtr& udfIndex,
- const TUdfIndexPackageSet::TPtr& udfIndexPackageSet,
+ const TUdfIndex::TPtr& udfIndex,
+ const TUdfIndexPackageSet::TPtr& udfIndexPackageSet,
const TFileStoragePtr& fileStorage,
const TGatewaysConfig* gatewaysConfig,
const TString& filename,
@@ -233,10 +233,10 @@ TProgram::TProgram(
, CredentialTables_(credentialTables)
, UserCredentials_(userCredentials)
, UdfResolver_(udfResolver)
- , UdfIndex_(udfIndex)
- , UdfIndexPackageSet_(udfIndexPackageSet)
+ , UdfIndex_(udfIndex)
+ , UdfIndexPackageSet_(udfIndexPackageSet)
, FileStorage_(fileStorage)
- , UserDataStorage_(MakeIntrusive<TUserDataStorage>(fileStorage, userDataTable, udfResolver, udfIndex))
+ , UserDataStorage_(MakeIntrusive<TUserDataStorage>(fileStorage, userDataTable, udfResolver, udfIndex))
, GatewaysConfig_(gatewaysConfig)
, Filename_(filename)
, SourceCode_(sourceCode)
@@ -251,11 +251,11 @@ TProgram::TProgram(
, EnableRangeComputeFor_(enableRangeComputeFor)
{
if (SessionId_.empty()) {
- SessionId_ = CreateGuidAsString();
- }
-
+ SessionId_ = CreateGuidAsString();
+ }
+
if (auto modules = dynamic_cast<TModuleResolver*>(Modules_.get())) {
- modules->AttachUserData(UserDataStorage_);
+ modules->AttachUserData(UserDataStorage_);
modules->SetUrlLoader(new TUrlLoader(FileStorage_));
}
OperationOptions_.Runner = runner;
@@ -277,31 +277,31 @@ void TProgram::ConfigureYsonResultFormat(NYson::EYsonFormat format) {
}
void TProgram::SetValidateOptions(NUdf::EValidateMode validateMode) {
- Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
+ Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
ValidateMode_ = validateMode;
}
-void TProgram::SetDisableNativeUdfSupport(bool disable) {
- Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
- DisableNativeUdfSupport_ = disable;
-}
-
+void TProgram::SetDisableNativeUdfSupport(bool disable) {
+ Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
+ DisableNativeUdfSupport_ = disable;
+}
+
void TProgram::SetUseTableMetaFromGraph(bool use) {
Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
UseTableMetaFromGraph_ = use;
}
-TTypeAnnotationContextPtr TProgram::GetAnnotationContext() const {
- Y_ENSURE(TypeCtx_, "TypeCtx_ is not created");
- return TypeCtx_;
-}
-
-TTypeAnnotationContextPtr TProgram::ProvideAnnotationContext(const TString& username) {
+TTypeAnnotationContextPtr TProgram::GetAnnotationContext() const {
+ Y_ENSURE(TypeCtx_, "TypeCtx_ is not created");
+ return TypeCtx_;
+}
+
+TTypeAnnotationContextPtr TProgram::ProvideAnnotationContext(const TString& username) {
if (!TypeCtx_) {
- TypeCtx_ = BuildTypeAnnotationContext(username);
+ TypeCtx_ = BuildTypeAnnotationContext(username);
TypeCtx_->OperationOptions = OperationOptions_;
TypeCtx_->ValidateMode = ValidateMode_;
- TypeCtx_->DisableNativeUdfSupport = DisableNativeUdfSupport_;
+ TypeCtx_->DisableNativeUdfSupport = DisableNativeUdfSupport_;
TypeCtx_->UseTableMetaFromGraph = UseTableMetaFromGraph_;
}
@@ -316,14 +316,14 @@ IPlanBuilder& TProgram::GetPlanBuilder() {
return *PlanBuilder_;
}
-void TProgram::SetParametersYson(const TString& parameters) {
- Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
- auto node = NYT::NodeFromYsonString(parameters);
+void TProgram::SetParametersYson(const TString& parameters) {
+ Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
+ auto node = NYT::NodeFromYsonString(parameters);
YQL_ENSURE(node.IsMap());
for (const auto& x : node.AsMap()) {
YQL_ENSURE(x.second.IsMap());
YQL_ENSURE(x.second.HasKey("Data"));
- YQL_ENSURE(x.second.Size() == 1);
+ YQL_ENSURE(x.second.Size() == 1);
}
OperationOptions_.ParametersYson = node;
@@ -332,18 +332,18 @@ void TProgram::SetParametersYson(const TString& parameters) {
}
}
-bool TProgram::ExtractQueryParametersMetadata() {
- auto& types = *GetAnnotationContext();
- NYT::TNode params = NYT::TNode::CreateMap();
- Y_ENSURE(ExprCtx_);
- if (!ExtractParametersMetaAsYson(ExprRoot_, types, *ExprCtx_, params)) {
- return false;
- }
-
- ExtractedQueryParametersMetadataYson_ = NYT::NodeToYsonString(params, ResultFormat_);
- return true;
-}
-
+bool TProgram::ExtractQueryParametersMetadata() {
+ auto& types = *GetAnnotationContext();
+ NYT::TNode params = NYT::TNode::CreateMap();
+ Y_ENSURE(ExprCtx_);
+ if (!ExtractParametersMetaAsYson(ExprRoot_, types, *ExprCtx_, params)) {
+ return false;
+ }
+
+ ExtractedQueryParametersMetadataYson_ = NYT::NodeToYsonString(params, ResultFormat_);
+ return true;
+}
+
bool TProgram::FillParseResult(NYql::TAstParseResult&& astRes, NYql::TWarningRules* warningRules) {
if (!astRes.Issues.Empty()) {
if (!ExprCtx_) {
@@ -374,19 +374,19 @@ bool TProgram::FillParseResult(NYql::TAstParseResult&& astRes, NYql::TWarningRul
return true;
}
-TString TProgram::GetSessionId() const {
- with_lock(SessionIdLock_) {
- return SessionId_;
- }
-}
-
-TString TProgram::TakeSessionId() {
- // post-condition: SessionId_ will be empty
- with_lock(SessionIdLock_) {
- return std::move(SessionId_);
- }
-}
-
+TString TProgram::GetSessionId() const {
+ with_lock(SessionIdLock_) {
+ return SessionId_;
+ }
+}
+
+TString TProgram::TakeSessionId() {
+ // post-condition: SessionId_ will be empty
+ with_lock(SessionIdLock_) {
+ return std::move(SessionId_);
+ }
+}
+
bool TProgram::ParseYql() {
YQL_PROFILE_FUNC(TRACE);
YQL_ENSURE(SourceSyntax_ == ESourceSyntax::Unknown);
@@ -417,18 +417,18 @@ bool TProgram::ParseSql(const NSQLTranslation::TTranslationSettings& settings)
return FillParseResult(SqlToYql(SourceCode_, settings, &warningRules), &warningRules);
}
-bool TProgram::Compile(const TString& username) {
+bool TProgram::Compile(const TString& username) {
YQL_PROFILE_FUNC(TRACE);
Y_ENSURE(AstRoot_, "Program not parsed yet");
if (!ExprCtx_) {
ExprCtx_.Reset(new TExprContext(NextUniqueId_));
}
-
- if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_)) {
- return false;
- }
- TypeCtx_->IsReadOnly = true;
+
+ if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_)) {
+ return false;
+ }
+ TypeCtx_->IsReadOnly = true;
if (Modules_.get()) {
auto libs = UserDataStorage_->GetLibraries();
for (auto lib : libs) {
@@ -437,7 +437,7 @@ bool TProgram::Compile(const TString& username) {
}
}
}
-
+
if (!CompileExpr(*AstRoot_, ExprRoot_, *ExprCtx_, Modules_.get(), 0, SyntaxVersion_)) {
return false;
}
@@ -551,7 +551,7 @@ TProgram::TStatus TProgram::Validate(const TString& username, IOutputStream* exp
}
TProgram::TFutureStatus TProgram::ValidateAsync(const TString& username, IOutputStream* exprOut, bool withTypes) {
- if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
+ if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
return NThreading::MakeFuture<TStatus>(IGraphTransformer::TStatus::Error);
}
TypeCtx_->IsReadOnly = true;
@@ -585,7 +585,7 @@ TProgram::TFutureStatus TProgram::ValidateAsync(const TString& username, IOutput
}
return openSession.Apply([this](const TFuture<void>& f) {
- YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
+ YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
try {
f.GetValue();
} catch (const std::exception& e) {
@@ -616,7 +616,7 @@ TProgram::TFutureStatus TProgram::OptimizeAsync(
IOutputStream* exprOut,
bool withTypes)
{
- if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
+ if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
return NThreading::MakeFuture<TStatus>(IGraphTransformer::TStatus::Error);
}
TypeCtx_->IsReadOnly = true;
@@ -657,7 +657,7 @@ TProgram::TFutureStatus TProgram::OptimizeAsync(
return NThreading::MakeFuture<TStatus>(IGraphTransformer::TStatus::Error);
return openSession.Apply([this](const TFuture<void>& f) {
- YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
+ YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
try {
f.GetValue();
} catch (const std::exception& e) {
@@ -680,7 +680,7 @@ TProgram::TStatus TProgram::OptimizeWithConfig(
TProgram::TFutureStatus TProgram::OptimizeAsyncWithConfig(
const TString& username, const IPipelineConfigurator& pipelineConf)
{
- if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
+ if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
return NThreading::MakeFuture<TStatus>(IGraphTransformer::TStatus::Error);
}
TypeCtx_->IsReadOnly = true;
@@ -726,7 +726,7 @@ TProgram::TFutureStatus TProgram::OptimizeAsyncWithConfig(
return NThreading::MakeFuture<TStatus>(IGraphTransformer::TStatus::Error);
return openSession.Apply([this](const TFuture<void>& f) {
- YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
+ YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
try {
f.GetValue();
} catch (const std::exception& e) {
@@ -757,7 +757,7 @@ TProgram::TFutureStatus TProgram::RunAsync(
IOutputStream* exprOut,
bool withTypes)
{
- if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
+ if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
return NThreading::MakeFuture<TStatus>(IGraphTransformer::TStatus::Error);
}
TypeCtx_->IsReadOnly = false;
@@ -808,7 +808,7 @@ TProgram::TFutureStatus TProgram::RunAsync(
SavedExprRoot_ = ExprRoot_;
return openSession.Apply([this](const TFuture<void>& f) {
- YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
+ YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
try {
f.GetValue();
} catch (const std::exception& e) {
@@ -831,7 +831,7 @@ TProgram::TStatus TProgram::RunWithConfig(
TProgram::TFutureStatus TProgram::RunAsyncWithConfig(
const TString& username, const IPipelineConfigurator& pipelineConf)
{
- if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
+ if (!ProvideAnnotationContext(username)->Initialize(*ExprCtx_) || !CollectUsedClusters()) {
return NThreading::MakeFuture<TStatus>(IGraphTransformer::TStatus::Error);
}
TypeCtx_->IsReadOnly = false;
@@ -880,7 +880,7 @@ TProgram::TFutureStatus TProgram::RunAsyncWithConfig(
SavedExprRoot_ = ExprRoot_;
return openSession.Apply([this](const TFuture<void>& f) {
- YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
+ YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
try {
f.GetValue();
} catch (const std::exception& e) {
@@ -1190,7 +1190,7 @@ TMaybe<TString> TProgram::GetDiscoveredData() {
}
TProgram::TFutureStatus TProgram::ContinueAsync() {
- YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
+ YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
return AsyncTransformWithFallback(true);
}
@@ -1215,9 +1215,9 @@ void TProgram::CleanupLastSession() {
}
void TProgram::CloseLastSession() {
- YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
+ YQL_LOG_CTX_ROOT_SCOPE(GetSessionId());
- TString sessionId = TakeSessionId();
+ TString sessionId = TakeSessionId();
if (sessionId.empty()) {
return;
}
@@ -1244,35 +1244,35 @@ TString TProgram::ResultsAsString() const {
return resultOut.Str();
}
-TTypeAnnotationContextPtr TProgram::BuildTypeAnnotationContext(const TString& username) {
+TTypeAnnotationContextPtr TProgram::BuildTypeAnnotationContext(const TString& username) {
auto typeAnnotationContext = MakeIntrusive<TTypeAnnotationContext>();
-
- typeAnnotationContext->UserDataStorage = UserDataStorage_;
+
+ typeAnnotationContext->UserDataStorage = UserDataStorage_;
typeAnnotationContext->Credentials = CredentialTables_;
typeAnnotationContext->UserCredentials = UserCredentials_;
typeAnnotationContext->Modules = Modules_;
typeAnnotationContext->UdfResolver = UdfResolver_;
- typeAnnotationContext->UdfIndex = UdfIndex_;
- typeAnnotationContext->UdfIndexPackageSet = UdfIndexPackageSet_;
+ typeAnnotationContext->UdfIndex = UdfIndex_;
+ typeAnnotationContext->UdfIndexPackageSet = UdfIndexPackageSet_;
typeAnnotationContext->RandomProvider = RandomProvider_;
typeAnnotationContext->TimeProvider = TimeProvider_;
if (DiagnosticFormat_) {
typeAnnotationContext->Diagnostics = true;
}
- if (UdfIndex_ && UdfIndexPackageSet_) {
- // setup default versions at the beginning
- // could be overridden by pragma later
- UdfIndexPackageSet_->AddResourcesTo(UdfIndex_);
- }
-
+ if (UdfIndex_ && UdfIndexPackageSet_) {
+ // setup default versions at the beginning
+ // could be overridden by pragma later
+ UdfIndexPackageSet_->AddResourcesTo(UdfIndex_);
+ }
+
PlanBuilder_ = CreatePlanBuilder(*typeAnnotationContext);
THashSet<TString> providerNames;
TVector<TString> fullResultDataSinks;
- TVector<std::function<TMaybe<TString>(const TString& url)>> tokenResolvers;
+ TVector<std::function<TMaybe<TString>(const TString& url)>> tokenResolvers;
for (const auto& dpi : DataProvidersInit_) {
auto dp = dpi(
- username,
+ username,
SessionId_,
GatewaysConfig_,
FunctionRegistry_,
@@ -1291,10 +1291,10 @@ TTypeAnnotationContextPtr TProgram::BuildTypeAnnotationContext(const TString& us
if (dp.Sink) {
typeAnnotationContext->AddDataSink(dp.Names, dp.Sink);
}
-
- if (dp.TokenResolver) {
- tokenResolvers.push_back(dp.TokenResolver);
- }
+
+ if (dp.TokenResolver) {
+ tokenResolvers.push_back(dp.TokenResolver);
+ }
if (dp.SupportFullResultDataSink) {
fullResultDataSinks.insert(fullResultDataSinks.end(), dp.Names.begin(), dp.Names.end());
@@ -1343,7 +1343,7 @@ TTypeAnnotationContextPtr TProgram::BuildTypeAnnotationContext(const TString& us
typeAnnotationContext->AddDataSource(ConfigProviderName, configProvider);
}
- typeAnnotationContext->UserDataStorage->SetTokenResolver(BuildCompositeTokenResolver(std::move(tokenResolvers)));
+ typeAnnotationContext->UserDataStorage->SetTokenResolver(BuildCompositeTokenResolver(std::move(tokenResolvers)));
return typeAnnotationContext;
}
diff --git a/ydb/library/yql/core/facade/yql_facade.h b/ydb/library/yql/core/facade/yql_facade.h
index 1f8f47681d..c954c08266 100644
--- a/ydb/library/yql/core/facade/yql_facade.h
+++ b/ydb/library/yql/core/facade/yql_facade.h
@@ -44,13 +44,13 @@ public:
const TVector<TDataProviderInitializer>& dataProvidersInit,
const TString& runner);
- void AddUserDataTable(const TUserDataTable& userDataTable);
+ void AddUserDataTable(const TUserDataTable& userDataTable);
void AddCredentialsTable(TCredentialTablePtr credentialTable);
void SetUserCredentials(const TUserCredentials& userCredentials);
void SetGatewaysConfig(const TGatewaysConfig* gatewaysConfig);
void SetModules(IModuleResolver::TPtr modules);
void SetUdfResolver(IUdfResolver::TPtr udfResolver);
- void SetUdfIndex(TUdfIndex::TPtr udfIndex, TUdfIndexPackageSet::TPtr udfIndexPackageSet);
+ void SetUdfIndex(TUdfIndex::TPtr udfIndex, TUdfIndexPackageSet::TPtr udfIndexPackageSet);
void SetFileStorage(TFileStoragePtr fileStorage);
void EnableRangeComputeFor();
@@ -70,14 +70,14 @@ private:
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry_;
const ui64 NextUniqueId_;
TVector<TDataProviderInitializer> DataProvidersInit_;
- TUserDataTable UserDataTable_;
+ TUserDataTable UserDataTable_;
TVector<TCredentialTablePtr> CredentialTables_;
TUserCredentials UserCredentials_;
const TGatewaysConfig* GatewaysConfig_;
IModuleResolver::TPtr Modules_;
IUdfResolver::TPtr UdfResolver_;
- TUdfIndex::TPtr UdfIndex_;
- TUdfIndexPackageSet::TPtr UdfIndexPackageSet_;
+ TUdfIndex::TPtr UdfIndex_;
+ TUdfIndexPackageSet::TPtr UdfIndexPackageSet_;
TFileStoragePtr FileStorage_;
TString Runner_;
bool EnableRangeComputeFor_ = false;
@@ -100,7 +100,7 @@ public:
bool ParseSql();
bool ParseSql(const NSQLTranslation::TTranslationSettings& settings);
- bool Compile(const TString& username);
+ bool Compile(const TString& username);
TStatus Discover(const TString& username);
@@ -169,13 +169,13 @@ public:
}
inline TIssues CompletedIssues() const {
- if (ExprCtx_) {
- return ExprCtx_->IssueManager.GetCompletedIssues();
- } else {
+ if (ExprCtx_) {
+ return ExprCtx_->IssueManager.GetCompletedIssues();
+ } else {
return {};
- }
- }
-
+ }
+ }
+
void Print(IOutputStream* exprOut, IOutputStream* planOut, bool cleanPlan = false);
inline void PrintErrorsTo(IOutputStream& out) const {
@@ -231,11 +231,11 @@ public:
NYson::EYsonFormat GetOutputFormat() const { return OutputFormat_; }
void SetValidateOptions(NUdf::EValidateMode validateMode);
- void SetDisableNativeUdfSupport(bool disable);
+ void SetDisableNativeUdfSupport(bool disable);
void SetUseTableMetaFromGraph(bool use);
void SetProgressWriter(TOperationProgressWriter writer) {
- Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
+ Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
ProgressWriter_ = ThreadSafeProgressWriter(writer);
}
@@ -245,7 +245,7 @@ public:
}
void SetOperationId(const TString& id) {
- Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
+ Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
OperationOptions_.Id = id;
}
@@ -255,7 +255,7 @@ public:
}
void SetOperationTitle(const TString& title) {
- Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
+ Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
if (!title.Contains("YQL")) {
ythrow yexception() << "Please mention YQL in the title '" << title << "'";
}
@@ -269,23 +269,23 @@ public:
}
void SetQueryName(const TString& name) {
- Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
+ Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
OperationOptions_.QueryName = name;
}
void SetOperationAttrsYson(const TString& attrs) {
- Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
+ Y_ENSURE(!TypeCtx_, "TypeCtx_ already created");
OperationOptions_.AttrsYson = attrs;
}
- void SetParametersYson(const TString& parameters);
- // should be used after Compile phase
- bool ExtractQueryParametersMetadata();
-
- const TString& GetExtractedQueryParametersMetadataYson() const {
- return ExtractedQueryParametersMetadataYson_;
- }
+ void SetParametersYson(const TString& parameters);
+ // should be used after Compile phase
+ bool ExtractQueryParametersMetadata();
+ const TString& GetExtractedQueryParametersMetadataYson() const {
+ return ExtractedQueryParametersMetadataYson_;
+ }
+
void EnableResultPosition() {
SupportsResultPosition_ = true;
}
@@ -299,13 +299,13 @@ private:
const TIntrusivePtr<ITimeProvider> timeProvider,
ui64 nextUniqueId,
const TVector<TDataProviderInitializer>& dataProvidersInit,
- const TUserDataTable& userDataTable,
+ const TUserDataTable& userDataTable,
const TVector<TCredentialTablePtr>& credentialTables,
const TUserCredentials& userCredentials,
const IModuleResolver::TPtr& modules,
const IUdfResolver::TPtr& udfResolver,
- const TUdfIndex::TPtr& udfIndex,
- const TUdfIndexPackageSet::TPtr& udfIndexPackageSet,
+ const TUdfIndex::TPtr& udfIndex,
+ const TUdfIndexPackageSet::TPtr& udfIndexPackageSet,
const TFileStoragePtr& fileStorage,
const TGatewaysConfig* gatewaysConfig,
const TString& filename,
@@ -314,9 +314,9 @@ private:
const TString& runner,
bool enableRangeComputeFor);
- TTypeAnnotationContextPtr BuildTypeAnnotationContext(const TString& username);
- TTypeAnnotationContextPtr GetAnnotationContext() const;
- TTypeAnnotationContextPtr ProvideAnnotationContext(const TString& username);
+ TTypeAnnotationContextPtr BuildTypeAnnotationContext(const TString& username);
+ TTypeAnnotationContextPtr GetAnnotationContext() const;
+ TTypeAnnotationContextPtr ProvideAnnotationContext(const TString& username);
bool CollectUsedClusters();
NThreading::TFuture<void> OpenSession(const TString& username);
@@ -329,12 +329,12 @@ private:
TFutureStatus RemoteKikimrRun(const TString& cluster, const IPipelineConfigurator* pipelineConf);
bool FillParseResult(NYql::TAstParseResult&& astRes, NYql::TWarningRules* warningRules = nullptr);
- TString GetSessionId() const;
- TString TakeSessionId();
+ TString GetSessionId() const;
+ TString TakeSessionId();
NThreading::TFuture<IGraphTransformer::TStatus> AsyncTransformWithFallback(bool applyAsyncChanges);
-private:
+private:
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry_;
const TIntrusivePtr<IRandomProvider> RandomProvider_;
const TIntrusivePtr<ITimeProvider> TimeProvider_;
@@ -345,10 +345,10 @@ private:
TVector<TCredentialTablePtr> CredentialTables_;
TUserCredentials UserCredentials_;
const IUdfResolver::TPtr UdfResolver_;
- const TUdfIndex::TPtr UdfIndex_;
- const TUdfIndexPackageSet::TPtr UdfIndexPackageSet_;
+ const TUdfIndex::TPtr UdfIndex_;
+ const TUdfIndexPackageSet::TPtr UdfIndexPackageSet_;
const TFileStoragePtr FileStorage_;
- const TUserDataStorage::TPtr UserDataStorage_;
+ const TUserDataStorage::TPtr UserDataStorage_;
const TGatewaysConfig* GatewaysConfig_;
TString Filename_;
TString SourceCode_;
@@ -361,7 +361,7 @@ private:
const IModuleResolver::TPtr Modules_;
TExprNode::TPtr ExprRoot_;
TExprNode::TPtr SavedExprRoot_;
- mutable TAdaptiveLock SessionIdLock_;
+ mutable TAdaptiveLock SessionIdLock_;
TString SessionId_;
TTypeAnnotationContextPtr TypeCtx_;
TAutoPtr<IPlanBuilder> PlanBuilder_;
@@ -372,7 +372,7 @@ private:
NYson::EYsonFormat OutputFormat_;
TMaybe<NYson::EYsonFormat> DiagnosticFormat_;
NUdf::EValidateMode ValidateMode_ = NUdf::EValidateMode::None;
- bool DisableNativeUdfSupport_ = false;
+ bool DisableNativeUdfSupport_ = false;
bool UseTableMetaFromGraph_ = false;
TMaybe<TSet<TString>> UsedClusters_;
TMaybe<TSet<TString>> UsedProviders_;
@@ -383,7 +383,7 @@ private:
IOutputStream* ExprStream_ = nullptr;
IOutputStream* PlanStream_ = nullptr;
TOperationProgressWriter ProgressWriter_ = [](const TOperationProgress&) {};
- TString ExtractedQueryParametersMetadataYson_;
+ TString ExtractedQueryParametersMetadataYson_;
const bool EnableRangeComputeFor_;
};
diff --git a/ydb/library/yql/core/file_storage/download_stream.cpp b/ydb/library/yql/core/file_storage/download_stream.cpp
index ebd7c5616f..83bf7d4059 100644
--- a/ydb/library/yql/core/file_storage/download_stream.cpp
+++ b/ydb/library/yql/core/file_storage/download_stream.cpp
@@ -1,19 +1,19 @@
-#include "download_stream.h"
-
-namespace NYql {
-
-TDownloadStream::TDownloadStream(IInputStream& delegatee)
- : Delegatee_(delegatee)
-{
-}
-
-size_t TDownloadStream::DoRead(void* buf, size_t len) {
- try {
- return Delegatee_.Read(buf, len);
- } catch (const std::exception& e) {
- // just change type of the exception
- throw TDownloadError() << e.what();
- }
-}
-
-}
+#include "download_stream.h"
+
+namespace NYql {
+
+TDownloadStream::TDownloadStream(IInputStream& delegatee)
+ : Delegatee_(delegatee)
+{
+}
+
+size_t TDownloadStream::DoRead(void* buf, size_t len) {
+ try {
+ return Delegatee_.Read(buf, len);
+ } catch (const std::exception& e) {
+ // just change type of the exception
+ throw TDownloadError() << e.what();
+ }
+}
+
+}
diff --git a/ydb/library/yql/core/file_storage/download_stream.h b/ydb/library/yql/core/file_storage/download_stream.h
index 7f41509068..93d5006a5d 100644
--- a/ydb/library/yql/core/file_storage/download_stream.h
+++ b/ydb/library/yql/core/file_storage/download_stream.h
@@ -1,21 +1,21 @@
-#pragma once
-
-#include <util/generic/yexception.h>
-#include <util/stream/input.h>
-
-namespace NYql {
-
-class TDownloadError : public yexception {
-};
-
-class TDownloadStream : public IInputStream {
-public:
- explicit TDownloadStream(IInputStream& delegatee);
-
-private:
- size_t DoRead(void* buf, size_t len) override;
-
-private:
- IInputStream& Delegatee_;
-};
-}
+#pragma once
+
+#include <util/generic/yexception.h>
+#include <util/stream/input.h>
+
+namespace NYql {
+
+class TDownloadError : public yexception {
+};
+
+class TDownloadStream : public IInputStream {
+public:
+ explicit TDownloadStream(IInputStream& delegatee);
+
+private:
+ size_t DoRead(void* buf, size_t len) override;
+
+private:
+ IInputStream& Delegatee_;
+};
+}
diff --git a/ydb/library/yql/core/file_storage/file_storage.cpp b/ydb/library/yql/core/file_storage/file_storage.cpp
index 631adbc688..8d6fd89a48 100644
--- a/ydb/library/yql/core/file_storage/file_storage.cpp
+++ b/ydb/library/yql/core/file_storage/file_storage.cpp
@@ -1,7 +1,7 @@
#include "file_storage.h"
#include "storage.h"
-#include "url_mapper.h"
-#include "url_meta.h"
+#include "url_mapper.h"
+#include "url_meta.h"
#include "download_stream.h"
#include <ydb/library/yql/core/file_storage/proto/file_storage.pb.h>
@@ -13,64 +13,64 @@
#include <ydb/library/yql/utils/md5_stream.h>
#include <ydb/library/yql/utils/retry.h>
#include <ydb/library/yql/utils/yql_panic.h>
-
+
#include <library/cpp/cache/cache.h>
#include <library/cpp/digest/md5/md5.h>
#include <library/cpp/threading/future/async.h>
-#include <util/generic/guid.h>
+#include <util/generic/guid.h>
#include <util/generic/yexception.h>
-#include <util/stream/file.h>
+#include <util/stream/file.h>
#include <util/stream/null.h>
#include <util/system/fs.h>
-#include <util/system/fstat.h>
-#include <util/system/guard.h>
+#include <util/system/fstat.h>
+#include <util/system/guard.h>
#include <util/system/shellcommand.h>
#include <util/system/sysstat.h>
-#include <util/system/utime.h>
+#include <util/system/utime.h>
namespace NYql {
-class TFileStorageImpl: public IFileStorage {
+class TFileStorageImpl: public IFileStorage {
public:
- explicit TFileStorageImpl(const TFileStorageConfig& params)
- : Storage(params.GetMaxFiles(), ui64(params.GetMaxSizeMb()) << 20ull, params.GetPath())
- , Config(params)
- , QueueStarted(0)
+ explicit TFileStorageImpl(const TFileStorageConfig& params)
+ : Storage(params.GetMaxFiles(), ui64(params.GetMaxSizeMb()) << 20ull, params.GetPath())
+ , Config(params)
+ , QueueStarted(0)
{
try {
- for (const auto& sc : params.GetCustomSchemes()) {
- Mapper.AddMapping(sc.GetPattern(), sc.GetTargetUrl());
+ for (const auto& sc : params.GetCustomSchemes()) {
+ Mapper.AddMapping(sc.GetPattern(), sc.GetTargetUrl());
}
} catch (const yexception& e) {
- ythrow yexception() << "FileStorage: " << e.what();
+ ythrow yexception() << "FileStorage: " << e.what();
}
-
- auto numThreads = params.GetThreads();
- if (1 == numThreads) {
+
+ auto numThreads = params.GetThreads();
+ if (1 == numThreads) {
MtpQueue.Reset(new TFakeThreadPool());
- } else {
+ } else {
MtpQueue.Reset(new TSimpleThreadPool(TThreadPoolParams{"FileStorage"}));
- }
-
- // do not call MtpQueue->Start here as we have to do it _after_ fork
- }
-
- ~TFileStorageImpl() {
- MtpQueue->Stop();
+ }
+
+ // do not call MtpQueue->Start here as we have to do it _after_ fork
}
+ ~TFileStorageImpl() {
+ MtpQueue->Stop();
+ }
+
void AddDownloader(IDownloaderPtr downloader) override {
Downloaders.push_back(std::move(downloader));
- }
-
+ }
+
TFileLinkPtr PutFile(const TString& file, const TString& outFileName = {}) override {
YQL_LOG(INFO) << "PutFile to cache: " << file;
- const auto md5 = MD5::File(file);
- const TString storageFileName = md5 + ".file";
- auto lock = MultiResourceLock.Acquire(storageFileName);
- return Storage.Put(storageFileName, outFileName, md5, [&file, &md5](const TFsPath& dstFile) {
+ const auto md5 = MD5::File(file);
+ const TString storageFileName = md5 + ".file";
+ auto lock = MultiResourceLock.Acquire(storageFileName);
+ return Storage.Put(storageFileName, outFileName, md5, [&file, &md5](const TFsPath& dstFile) {
NFs::HardLinkOrCopy(file, dstFile);
i64 length = GetFileLength(dstFile.c_str());
if (length == -1) {
@@ -128,11 +128,11 @@ public:
}
TFileLinkPtr PutInline(const TString& data) override {
- const auto md5 = MD5::Calc(data);
- const TString storageFileName = md5 + ".file";
+ const auto md5 = MD5::Calc(data);
+ const TString storageFileName = md5 + ".file";
YQL_LOG(INFO) << "PutInline to cache. md5=" << md5;
- auto lock = MultiResourceLock.Acquire(storageFileName);
- return Storage.Put(storageFileName, TString(), md5, [&data, &md5](const TFsPath& dstFile) {
+ auto lock = MultiResourceLock.Acquire(storageFileName);
+ return Storage.Put(storageFileName, TString(), md5, [&data, &md5](const TFsPath& dstFile) {
TStringInput in(data);
TFile outFile(dstFile, CreateAlways | ARW | AX);
TUnbufferedFileOutput out(outFile);
@@ -150,54 +150,54 @@ public:
}
TFileLinkPtr PutUrl(const TString& urlStr, const TString& oauthToken) override {
- try {
- TString convertedUrl;
- if (!Mapper.MapUrl(urlStr, convertedUrl)) {
- convertedUrl = urlStr;
- }
+ try {
+ TString convertedUrl;
+ if (!Mapper.MapUrl(urlStr, convertedUrl)) {
+ convertedUrl = urlStr;
+ }
YQL_LOG(INFO) << "PutUrl to cache: " << convertedUrl;
- THttpURL url = ParseURL(convertedUrl);
+ THttpURL url = ParseURL(convertedUrl);
for (const auto& d: Downloaders) {
if (d->Accept(url)) {
return PutUrl(url, oauthToken, d);
}
- }
+ }
ythrow yexception() << "Unsupported url: " << convertedUrl;
- } catch (const std::exception& e) {
+ } catch (const std::exception& e) {
YQL_LOG(ERROR) << "Failed to download file by URL \"" << urlStr << "\", details: " << e.what();
- YQL_LOG_CTX_THROW yexception() << "FileStorage: Failed to download file by URL \"" << urlStr << "\", details: " << e.what();
+ YQL_LOG_CTX_THROW yexception() << "FileStorage: Failed to download file by URL \"" << urlStr << "\", details: " << e.what();
}
}
- NThreading::TFuture<TFileLinkPtr> PutFileAsync(const TString& file, const TString& outFileName = {}) override {
- StartQueueOnce();
- return NThreading::Async([=]() {
- return this->PutFile(file, outFileName);
- }, *MtpQueue);
- }
-
- NThreading::TFuture<TFileLinkPtr> PutInlineAsync(const TString& data) override {
- StartQueueOnce();
- return NThreading::Async([=]() {
- return this->PutInline(data);
- }, *MtpQueue);
- }
-
- NThreading::TFuture<TFileLinkPtr> PutUrlAsync(const TString& url, const TString& oauthToken) override {
- StartQueueOnce();
- return NThreading::Async([=]() {
- return this->PutUrl(url, oauthToken);
- }, *MtpQueue);
- }
-
+ NThreading::TFuture<TFileLinkPtr> PutFileAsync(const TString& file, const TString& outFileName = {}) override {
+ StartQueueOnce();
+ return NThreading::Async([=]() {
+ return this->PutFile(file, outFileName);
+ }, *MtpQueue);
+ }
+
+ NThreading::TFuture<TFileLinkPtr> PutInlineAsync(const TString& data) override {
+ StartQueueOnce();
+ return NThreading::Async([=]() {
+ return this->PutInline(data);
+ }, *MtpQueue);
+ }
+
+ NThreading::TFuture<TFileLinkPtr> PutUrlAsync(const TString& url, const TString& oauthToken) override {
+ StartQueueOnce();
+ return NThreading::Async([=]() {
+ return this->PutUrl(url, oauthToken);
+ }, *MtpQueue);
+ }
+
TFsPath GetRoot() const override {
- return Storage.GetRoot();
+ return Storage.GetRoot();
}
TFsPath GetTemp() const override {
- return Storage.GetTemp();
+ return Storage.GetTemp();
}
const TFileStorageConfig& GetConfig() const override {
@@ -205,38 +205,38 @@ public:
}
private:
- void StartQueueOnce() {
- // we shall call Start only once
- if (AtomicTryLock(&QueueStarted)) {
- MtpQueue->Start(Config.GetThreads());
- }
- }
-
+ void StartQueueOnce() {
+ // we shall call Start only once
+ if (AtomicTryLock(&QueueStarted)) {
+ MtpQueue->Start(Config.GetThreads());
+ }
+ }
+
TFileLinkPtr PutUrl(const THttpURL& url, const TString& oauthToken, const IDownloaderPtr& downloader) {
- return WithRetry<TDownloadError>(Config.GetRetryCount(), [&, this]() {
+ return WithRetry<TDownloadError>(Config.GetRetryCount(), [&, this]() {
return this->DoPutUrl(url, oauthToken, downloader);
- }, [&](const auto& e, int attempt, int attemptCount) {
+ }, [&](const auto& e, int attempt, int attemptCount) {
YQL_LOG(WARN) << "Error while downloading url " << url.PrintS() << ", attempt " << attempt << "/" << attemptCount << ", details: " << e.what();
- Sleep(TDuration::MilliSeconds(Config.GetRetryDelayMs()));
- });
- }
-
+ Sleep(TDuration::MilliSeconds(Config.GetRetryDelayMs()));
+ });
+ }
+
TFileLinkPtr DoPutUrl(const THttpURL& url, const TString& oauthToken, const IDownloaderPtr& downloader) {
- const auto urlMetaFile = BuildUrlMetaFileName(url);
- auto lock = MultiResourceLock.Acquire(urlMetaFile); // let's use meta file as lock name
-
- TUrlMeta urlMeta;
- urlMeta.TryReadFrom(GetRoot() / urlMetaFile);
-
- TFileLinkPtr oldContentLink = nullptr;
- if (urlMeta.ContentFile) {
- oldContentLink = Storage.HardlinkFromStorage(urlMeta.ContentFile, urlMeta.Md5, "");
- }
-
- if (!oldContentLink) {
- urlMeta = TUrlMeta();
- }
-
+ const auto urlMetaFile = BuildUrlMetaFileName(url);
+ auto lock = MultiResourceLock.Acquire(urlMetaFile); // let's use meta file as lock name
+
+ TUrlMeta urlMeta;
+ urlMeta.TryReadFrom(GetRoot() / urlMetaFile);
+
+ TFileLinkPtr oldContentLink = nullptr;
+ if (urlMeta.ContentFile) {
+ oldContentLink = Storage.HardlinkFromStorage(urlMeta.ContentFile, urlMeta.Md5, "");
+ }
+
+ if (!oldContentLink) {
+ urlMeta = TUrlMeta();
+ }
+
YQL_LOG(INFO) << "UrlMeta: " << urlMetaFile << ", ETag=" << urlMeta.ETag
<< ", ContentFile=" << urlMeta.ContentFile << ", Md5=" << urlMeta.Md5
<< ", LastModified=" << urlMeta.LastModified;
@@ -262,41 +262,41 @@ private:
else if (urlMeta.LastModified && lastModified) {
YQL_LOG(INFO) << "LastModified for url " << url.PrintS() << " has been changed from " << urlMeta.LastModified << " to " << lastModified << ". We have to download new version";
}
-
+
// todo: remove oldContentLink ?
const auto urlContentFile = BuildUrlContentFileName(url, etag, lastModified);
TFileLinkPtr result = Storage.Put(urlContentFile, TString(), TString(), puller);
-
- // save meta using rename for atomicity
- urlMeta.ETag = etag;
- urlMeta.LastModified = lastModified;
- urlMeta.ContentFile = result->GetStorageFileName();
- urlMeta.Md5 = result->GetMd5();
- auto metaTmpFile = Storage.GetTemp() / Storage.GetTempName();
- urlMeta.SaveTo(metaTmpFile);
-
- Storage.MoveToStorage(metaTmpFile, urlMetaFile);
-
- return result;
- }
-
- static TString BuildUrlMetaFileName(const THttpURL& url) {
- return MD5::Calc(url.PrintS(THttpURL::FlagNoFrag | THttpURL::FlagHostAscii)) + ".url_meta";
- }
-
- static TString BuildUrlContentFileName(const THttpURL& url, const TString& etag, const TString& lastModified) {
- TString needle = etag ? etag : lastModified;
- return MD5::Calc(needle + url.PrintS(THttpURL::FlagNoFrag | THttpURL::FlagHostAscii)) + ".url";
+
+ // save meta using rename for atomicity
+ urlMeta.ETag = etag;
+ urlMeta.LastModified = lastModified;
+ urlMeta.ContentFile = result->GetStorageFileName();
+ urlMeta.Md5 = result->GetMd5();
+ auto metaTmpFile = Storage.GetTemp() / Storage.GetTempName();
+ urlMeta.SaveTo(metaTmpFile);
+
+ Storage.MoveToStorage(metaTmpFile, urlMetaFile);
+
+ return result;
}
+ static TString BuildUrlMetaFileName(const THttpURL& url) {
+ return MD5::Calc(url.PrintS(THttpURL::FlagNoFrag | THttpURL::FlagHostAscii)) + ".url_meta";
+ }
+
+ static TString BuildUrlContentFileName(const THttpURL& url, const TString& etag, const TString& lastModified) {
+ TString needle = etag ? etag : lastModified;
+ return MD5::Calc(needle + url.PrintS(THttpURL::FlagNoFrag | THttpURL::FlagHostAscii)) + ".url";
+ }
+
private:
- TStorage Storage;
- const TFileStorageConfig Config;
+ TStorage Storage;
+ const TFileStorageConfig Config;
std::vector<IDownloaderPtr> Downloaders;
- TUrlMapper Mapper;
- TAtomic QueueStarted;
+ TUrlMapper Mapper;
+ TAtomic QueueStarted;
THolder<IThreadPool> MtpQueue;
- TMultiResourceLock MultiResourceLock;
+ TMultiResourceLock MultiResourceLock;
};
TFileStoragePtr CreateFileStorage(const TFileStorageConfig& params) {
diff --git a/ydb/library/yql/core/file_storage/file_storage.h b/ydb/library/yql/core/file_storage/file_storage.h
index 9133d57b1b..28fef171c4 100644
--- a/ydb/library/yql/core/file_storage/file_storage.h
+++ b/ydb/library/yql/core/file_storage/file_storage.h
@@ -4,7 +4,7 @@
#include <library/cpp/threading/future/future.h>
#include <library/cpp/uri/http_url.h>
-
+
#include <util/folder/path.h>
#include <util/generic/ptr.h>
#include <util/generic/string.h>
@@ -29,12 +29,12 @@ struct IFileStorage: public TThrRefBase {
virtual TFileLinkPtr PutFile(const TString& file, const TString& outFileName = {}) = 0;
virtual TFileLinkPtr PutFileStripped(const TString& file, const TString& originalMd5 = {}) = 0;
virtual TFileLinkPtr PutInline(const TString& data) = 0;
- virtual TFileLinkPtr PutUrl(const TString& url, const TString& oauthToken) = 0;
- // async versions
- virtual NThreading::TFuture<TFileLinkPtr> PutFileAsync(const TString& file, const TString& outFileName = {}) = 0;
- virtual NThreading::TFuture<TFileLinkPtr> PutInlineAsync(const TString& data) = 0;
- virtual NThreading::TFuture<TFileLinkPtr> PutUrlAsync(const TString& url, const TString& oauthToken) = 0;
-
+ virtual TFileLinkPtr PutUrl(const TString& url, const TString& oauthToken) = 0;
+ // async versions
+ virtual NThreading::TFuture<TFileLinkPtr> PutFileAsync(const TString& file, const TString& outFileName = {}) = 0;
+ virtual NThreading::TFuture<TFileLinkPtr> PutInlineAsync(const TString& data) = 0;
+ virtual NThreading::TFuture<TFileLinkPtr> PutUrlAsync(const TString& url, const TString& oauthToken) = 0;
+
virtual TFsPath GetRoot() const = 0;
virtual TFsPath GetTemp() const = 0;
virtual const TFileStorageConfig& GetConfig() const = 0;
diff --git a/ydb/library/yql/core/file_storage/file_storage_ut.cpp b/ydb/library/yql/core/file_storage/file_storage_ut.cpp
index 5103fdd31d..96f08292d5 100644
--- a/ydb/library/yql/core/file_storage/file_storage_ut.cpp
+++ b/ydb/library/yql/core/file_storage/file_storage_ut.cpp
@@ -1,501 +1,501 @@
-#include "file_storage.h"
+#include "file_storage.h"
#include <ydb/library/yql/core/file_storage/ut/test_http_server.h>
#include <ydb/library/yql/core/file_storage/proto/file_storage.pb.h>
#include <ydb/library/yql/core/file_storage/http_download/http_download.h>
-
+
#include <library/cpp/threading/future/future.h>
#include <library/cpp/threading/future/async.h>
#include <library/cpp/testing/unittest/registar.h>
#include <library/cpp/testing/unittest/tests_data.h>
-
-#include <util/stream/file.h>
-#include <util/system/tempfile.h>
+
+#include <util/stream/file.h>
+#include <util/system/tempfile.h>
#include <util/thread/pool.h>
-
-using namespace NYql;
-using namespace NThreading;
-
+
+using namespace NYql;
+using namespace NThreading;
+
Y_UNIT_TEST_SUITE(TFileStorageTests) {
-
- static TString ReadFileContent(const TString& path) {
- return TIFStream(path).ReadAll();
- }
-
+
+ static TString ReadFileContent(const TString& path) {
+ return TIFStream(path).ReadAll();
+ }
+
static TFileStoragePtr CreateTestFS(const TFileStorageConfig& params = {}, const std::vector<TString>& extraPatterns = {}) {
TFileStoragePtr fs = CreateFileStorage(params);
fs->AddDownloader(MakeHttpDownloader(false, params, extraPatterns));
return fs;
}
- static std::unique_ptr<TTestHttpServer> CreateTestHttpServer() {
- TPortManager pm;
- const ui16 port = pm.GetPort();
- auto result = std::make_unique<TTestHttpServer>(port);
- result->Start();
-
- return result;
- }
-
- static void RemoveUrlMeta(const TFsPath& root) {
- TVector<TFsPath> children;
- root.List(children);
-
- auto it = FindIf(children, [](auto& c) {
- return c.GetExtension() == "url_meta";
- });
-
- UNIT_ASSERT(it != children.end());
- it->DeleteIfExists();
- }
-
- TString MakeWeakETag(const TString& strongETag) {
- return "W/" + strongETag;
- }
-
+ static std::unique_ptr<TTestHttpServer> CreateTestHttpServer() {
+ TPortManager pm;
+ const ui16 port = pm.GetPort();
+ auto result = std::make_unique<TTestHttpServer>(port);
+ result->Start();
+
+ return result;
+ }
+
+ static void RemoveUrlMeta(const TFsPath& root) {
+ TVector<TFsPath> children;
+ root.List(children);
+
+ auto it = FindIf(children, [](auto& c) {
+ return c.GetExtension() == "url_meta";
+ });
+
+ UNIT_ASSERT(it != children.end());
+ it->DeleteIfExists();
+ }
+
+ TString MakeWeakETag(const TString& strongETag) {
+ return "W/" + strongETag;
+ }
+
Y_UNIT_TEST(PutUrlNoTokenNoETag) {
- auto server = CreateTestHttpServer();
-
- int downloadCount = 0;
- TString currentContent = "ABC";
- server->SetRequestHandler([&](auto& request) {
- UNIT_ASSERT_VALUES_EQUAL(request.OAuthToken, "");
- ++downloadCount;
- return TTestHttpServer::TReply::Ok(currentContent);
- });
-
+ auto server = CreateTestHttpServer();
+
+ int downloadCount = 0;
+ TString currentContent = "ABC";
+ server->SetRequestHandler([&](auto& request) {
+ UNIT_ASSERT_VALUES_EQUAL(request.OAuthToken, "");
+ ++downloadCount;
+ return TTestHttpServer::TReply::Ok(currentContent);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
- auto link1 = fs->PutUrl(url, {});
- currentContent = "UNUSED FILE"; // just to be just second download will drop data
- auto link2 = fs->PutUrl(url, {});
-
- UNIT_ASSERT_VALUES_EQUAL(2, downloadCount); // assume file was not consumed completely second time
- UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link2->GetStorageFileName());
- const TString abcMd5 = "902fbdd2b1df0c4f70b4a5d23525e932";
- UNIT_ASSERT_VALUES_EQUAL(link1->GetMd5(), abcMd5);
- UNIT_ASSERT_VALUES_EQUAL(link1->GetMd5(), link2->GetMd5());
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link2->GetPath());
-
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
- }
-
+
+ auto url = server->GetUrl();
+ auto link1 = fs->PutUrl(url, {});
+ currentContent = "UNUSED FILE"; // just to be just second download will drop data
+ auto link2 = fs->PutUrl(url, {});
+
+ UNIT_ASSERT_VALUES_EQUAL(2, downloadCount); // assume file was not consumed completely second time
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link2->GetStorageFileName());
+ const TString abcMd5 = "902fbdd2b1df0c4f70b4a5d23525e932";
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetMd5(), abcMd5);
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetMd5(), link2->GetMd5());
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link2->GetPath());
+
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
+ }
+
Y_UNIT_TEST(PutUrlNoAccessForBadToken) {
- auto server = CreateTestHttpServer();
-
- TString okToken = "TOKEN_1";
- TString badToken = "TOKEN_2";
-
- server->SetRequestHandler([&](auto& request) {
- if (request.OAuthToken != okToken) {
- return TTestHttpServer::TReply::Forbidden();
- }
-
- const TString content = "ABC";
- return TTestHttpServer::TReply::Ok(content);
- });
-
+ auto server = CreateTestHttpServer();
+
+ TString okToken = "TOKEN_1";
+ TString badToken = "TOKEN_2";
+
+ server->SetRequestHandler([&](auto& request) {
+ if (request.OAuthToken != okToken) {
+ return TTestHttpServer::TReply::Forbidden();
+ }
+
+ const TString content = "ABC";
+ return TTestHttpServer::TReply::Ok(content);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
-
- UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, badToken), std::exception, "Failed to fetch url");
-
- auto link1 = fs->PutUrl(url, okToken);
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
-
- // still no access, we downloaded resource though
- UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, badToken), std::exception, "Failed to fetch url");
- }
-
+
+ auto url = server->GetUrl();
+
+ UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, badToken), std::exception, "Failed to fetch url");
+
+ auto link1 = fs->PutUrl(url, okToken);
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+
+ // still no access, we downloaded resource though
+ UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, badToken), std::exception, "Failed to fetch url");
+ }
+
Y_UNIT_TEST(PutUrlETagChange) {
- auto server = CreateTestHttpServer();
-
- TString currentETag = "TAG_1";
- TString currentContent = "ABC";
-
- int downloadCount = 0;
- server->SetRequestHandler([&](auto& request) {
- if (request.IfNoneMatch == currentETag) {
- return TTestHttpServer::TReply::NotModified(currentETag);
- }
-
- ++downloadCount;
- return TTestHttpServer::TReply::OkETag(currentContent, currentETag);
- });
-
+ auto server = CreateTestHttpServer();
+
+ TString currentETag = "TAG_1";
+ TString currentContent = "ABC";
+
+ int downloadCount = 0;
+ server->SetRequestHandler([&](auto& request) {
+ if (request.IfNoneMatch == currentETag) {
+ return TTestHttpServer::TReply::NotModified(currentETag);
+ }
+
+ ++downloadCount;
+ return TTestHttpServer::TReply::OkETag(currentContent, currentETag);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
-
- auto link1 = fs->PutUrl(url, {});
- auto link2 = fs->PutUrl(url, {});
-
- UNIT_ASSERT_VALUES_EQUAL(1, downloadCount);
-
- // change etag:
- currentETag = "TAG_2";
- currentContent = "XYZPQAZWSXEDC"; // change length as well
-
- auto link3 = fs->PutUrl(url, {});
- auto link4 = fs->PutUrl(url, {});
- UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
-
- // check contents:
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
-
- UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link3->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link4->GetPath()));
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetMd5(), link3->GetMd5());
- UNIT_ASSERT_VALUES_EQUAL(link3->GetMd5(), link4->GetMd5());
- }
-
- Y_UNIT_TEST(PutUrlLastModifiedChange) {
- auto server = CreateTestHttpServer();
-
- TString currentLastModified = "Wed, 05 Jun 2019 13:39:26 GMT";
- TString currentContent = "ABC";
-
- int downloadCount = 0;
- server->SetRequestHandler([&](auto& request) {
- if (request.IfModifiedSince == currentLastModified) {
- return TTestHttpServer::TReply::NotModified({}, currentLastModified);
- }
-
- ++downloadCount;
- return TTestHttpServer::TReply::OkLastModified(currentContent, currentLastModified);
- });
-
+
+ auto url = server->GetUrl();
+
+ auto link1 = fs->PutUrl(url, {});
+ auto link2 = fs->PutUrl(url, {});
+
+ UNIT_ASSERT_VALUES_EQUAL(1, downloadCount);
+
+ // change etag:
+ currentETag = "TAG_2";
+ currentContent = "XYZPQAZWSXEDC"; // change length as well
+
+ auto link3 = fs->PutUrl(url, {});
+ auto link4 = fs->PutUrl(url, {});
+ UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
+
+ // check contents:
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
+
+ UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link3->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link4->GetPath()));
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetMd5(), link3->GetMd5());
+ UNIT_ASSERT_VALUES_EQUAL(link3->GetMd5(), link4->GetMd5());
+ }
+
+ Y_UNIT_TEST(PutUrlLastModifiedChange) {
+ auto server = CreateTestHttpServer();
+
+ TString currentLastModified = "Wed, 05 Jun 2019 13:39:26 GMT";
+ TString currentContent = "ABC";
+
+ int downloadCount = 0;
+ server->SetRequestHandler([&](auto& request) {
+ if (request.IfModifiedSince == currentLastModified) {
+ return TTestHttpServer::TReply::NotModified({}, currentLastModified);
+ }
+
+ ++downloadCount;
+ return TTestHttpServer::TReply::OkLastModified(currentContent, currentLastModified);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
-
- auto link1 = fs->PutUrl(url, {});
- auto link2 = fs->PutUrl(url, {});
-
- UNIT_ASSERT_VALUES_EQUAL(1, downloadCount);
-
- // change LastModified:
- currentLastModified = "Wed, 06 Jun 2019 13:39:26 GMT";
- currentContent = "XYZPQAZWSXEDC"; // change length as well
-
- auto link3 = fs->PutUrl(url, {});
- auto link4 = fs->PutUrl(url, {});
- UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
-
- // check contents:
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
-
- UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link3->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link4->GetPath()));
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetMd5(), link3->GetMd5());
- UNIT_ASSERT_VALUES_EQUAL(link3->GetMd5(), link4->GetMd5());
- }
-
+
+ auto url = server->GetUrl();
+
+ auto link1 = fs->PutUrl(url, {});
+ auto link2 = fs->PutUrl(url, {});
+
+ UNIT_ASSERT_VALUES_EQUAL(1, downloadCount);
+
+ // change LastModified:
+ currentLastModified = "Wed, 06 Jun 2019 13:39:26 GMT";
+ currentContent = "XYZPQAZWSXEDC"; // change length as well
+
+ auto link3 = fs->PutUrl(url, {});
+ auto link4 = fs->PutUrl(url, {});
+ UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
+
+ // check contents:
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
+
+ UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link3->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link4->GetPath()));
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetMd5(), link3->GetMd5());
+ UNIT_ASSERT_VALUES_EQUAL(link3->GetMd5(), link4->GetMd5());
+ }
+
Y_UNIT_TEST(PutUrlETagChangeButNoSupportForIfNoneMatch) {
- auto server = CreateTestHttpServer();
-
- TString currentETag = "TAG_1";
- TString currentContent = "ABC";
-
- int downloadCount = 0;
- server->SetRequestHandler([&](auto& request) {
- Y_UNUSED(request);
- ++downloadCount;
- return TTestHttpServer::TReply::OkETag(currentContent, currentETag);
- });
-
+ auto server = CreateTestHttpServer();
+
+ TString currentETag = "TAG_1";
+ TString currentContent = "ABC";
+
+ int downloadCount = 0;
+ server->SetRequestHandler([&](auto& request) {
+ Y_UNUSED(request);
+ ++downloadCount;
+ return TTestHttpServer::TReply::OkETag(currentContent, currentETag);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
-
- auto link1 = fs->PutUrl(url, {});
- auto link2 = fs->PutUrl(url, {});
-
- UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
-
- // change etag:
- currentETag = "TAG_2";
- currentContent = "XYZPQAZWSXEDC"; // change length as well
-
- auto link3 = fs->PutUrl(url, {});
- auto link4 = fs->PutUrl(url, {});
- UNIT_ASSERT_VALUES_EQUAL(4, downloadCount);
-
- // check contents:
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
-
- UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link3->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link4->GetPath()));
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetMd5(), link3->GetMd5());
- UNIT_ASSERT_VALUES_EQUAL(link3->GetMd5(), link4->GetMd5());
- }
-
+
+ auto url = server->GetUrl();
+
+ auto link1 = fs->PutUrl(url, {});
+ auto link2 = fs->PutUrl(url, {});
+
+ UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
+
+ // change etag:
+ currentETag = "TAG_2";
+ currentContent = "XYZPQAZWSXEDC"; // change length as well
+
+ auto link3 = fs->PutUrl(url, {});
+ auto link4 = fs->PutUrl(url, {});
+ UNIT_ASSERT_VALUES_EQUAL(4, downloadCount);
+
+ // check contents:
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
+
+ UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link3->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link4->GetPath()));
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetMd5(), link3->GetMd5());
+ UNIT_ASSERT_VALUES_EQUAL(link3->GetMd5(), link4->GetMd5());
+ }
+
Y_UNIT_TEST(PutUrlWeakETagChange) {
- auto server = CreateTestHttpServer();
-
- TString currentETag = "TAG_1";
- TString currentContent = "ABC";
-
- int downloadCount = 0;
- server->SetRequestHandler([&](auto& request) {
- if (request.IfNoneMatch == currentETag) {
- return TTestHttpServer::TReply::NotModified(MakeWeakETag(currentETag));
- }
-
- ++downloadCount;
- return TTestHttpServer::TReply::OkETag(currentContent, MakeWeakETag(currentETag));
- });
-
+ auto server = CreateTestHttpServer();
+
+ TString currentETag = "TAG_1";
+ TString currentContent = "ABC";
+
+ int downloadCount = 0;
+ server->SetRequestHandler([&](auto& request) {
+ if (request.IfNoneMatch == currentETag) {
+ return TTestHttpServer::TReply::NotModified(MakeWeakETag(currentETag));
+ }
+
+ ++downloadCount;
+ return TTestHttpServer::TReply::OkETag(currentContent, MakeWeakETag(currentETag));
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
-
- auto link1 = fs->PutUrl(url, {});
- auto link2 = fs->PutUrl(url, {});
-
- UNIT_ASSERT_VALUES_EQUAL(1, downloadCount);
-
- // change etag:
- currentETag = "TAG_2";
- currentContent = "XYZPQAZWSXEDC"; // change length as well
-
- auto link3 = fs->PutUrl(url, {});
- auto link4 = fs->PutUrl(url, {});
- UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
-
- // check contents:
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
-
- UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link3->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link4->GetPath()));
- }
-
+
+ auto url = server->GetUrl();
+
+ auto link1 = fs->PutUrl(url, {});
+ auto link2 = fs->PutUrl(url, {});
+
+ UNIT_ASSERT_VALUES_EQUAL(1, downloadCount);
+
+ // change etag:
+ currentETag = "TAG_2";
+ currentContent = "XYZPQAZWSXEDC"; // change length as well
+
+ auto link3 = fs->PutUrl(url, {});
+ auto link4 = fs->PutUrl(url, {});
+ UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
+
+ // check contents:
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
+
+ UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link3->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("XYZPQAZWSXEDC", ReadFileContent(link4->GetPath()));
+ }
+
Y_UNIT_TEST(SecondPutUrlNoETagButFileRemoved) {
- auto server = CreateTestHttpServer();
-
- int downloadCount = 0;
- TString currentContent = "ABC";
- server->SetRequestHandler([&](auto& request) {
- UNIT_ASSERT(!request.IfNoneMatch);
- ++downloadCount;
- return TTestHttpServer::TReply::Ok(currentContent);
- });
-
+ auto server = CreateTestHttpServer();
+
+ int downloadCount = 0;
+ TString currentContent = "ABC";
+ server->SetRequestHandler([&](auto& request) {
+ UNIT_ASSERT(!request.IfNoneMatch);
+ ++downloadCount;
+ return TTestHttpServer::TReply::Ok(currentContent);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
- auto link1 = fs->PutUrl(url, {});
-
- auto storageFile = fs->GetRoot() / link1->GetStorageFileName();
- storageFile.DeleteIfExists();
-
- auto link2 = fs->PutUrl(url, {});
-
- UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
- UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link2->GetStorageFileName());
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link2->GetPath());
-
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
- }
-
+
+ auto url = server->GetUrl();
+ auto link1 = fs->PutUrl(url, {});
+
+ auto storageFile = fs->GetRoot() / link1->GetStorageFileName();
+ storageFile.DeleteIfExists();
+
+ auto link2 = fs->PutUrl(url, {});
+
+ UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link2->GetStorageFileName());
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link2->GetPath());
+
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
+ }
+
Y_UNIT_TEST(SecondPutUrlETagButFileRemoved) {
- auto server = CreateTestHttpServer();
-
- int downloadCount = 0;
- TString currentETag = "TAG_1";
- TString currentContent = "ABC";
- server->SetRequestHandler([&](auto& request) {
- UNIT_ASSERT(!request.IfNoneMatch);
- ++downloadCount;
- return TTestHttpServer::TReply::OkETag(currentContent, currentETag);
- });
-
+ auto server = CreateTestHttpServer();
+
+ int downloadCount = 0;
+ TString currentETag = "TAG_1";
+ TString currentContent = "ABC";
+ server->SetRequestHandler([&](auto& request) {
+ UNIT_ASSERT(!request.IfNoneMatch);
+ ++downloadCount;
+ return TTestHttpServer::TReply::OkETag(currentContent, currentETag);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
- auto link1 = fs->PutUrl(url, {});
-
- auto storageFile = fs->GetRoot() / link1->GetStorageFileName();
- storageFile.DeleteIfExists();
-
- auto link2 = fs->PutUrl(url, {});
-
- UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
- UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link2->GetStorageFileName());
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link2->GetPath());
-
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
- }
-
+
+ auto url = server->GetUrl();
+ auto link1 = fs->PutUrl(url, {});
+
+ auto storageFile = fs->GetRoot() / link1->GetStorageFileName();
+ storageFile.DeleteIfExists();
+
+ auto link2 = fs->PutUrl(url, {});
+
+ UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link2->GetStorageFileName());
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link2->GetPath());
+
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
+ }
+
Y_UNIT_TEST(SecondPutUrlETagButMetaRemoved) {
- auto server = CreateTestHttpServer();
-
- int downloadCount = 0;
- TString currentETag = "TAG_1";
- TString currentContent = "ABC";
- server->SetRequestHandler([&](auto& request) {
- UNIT_ASSERT(!request.IfNoneMatch);
- ++downloadCount;
- return TTestHttpServer::TReply::OkETag(currentContent, currentETag);
- });
-
+ auto server = CreateTestHttpServer();
+
+ int downloadCount = 0;
+ TString currentETag = "TAG_1";
+ TString currentContent = "ABC";
+ server->SetRequestHandler([&](auto& request) {
+ UNIT_ASSERT(!request.IfNoneMatch);
+ ++downloadCount;
+ return TTestHttpServer::TReply::OkETag(currentContent, currentETag);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
- auto link1 = fs->PutUrl(url, {});
-
- RemoveUrlMeta(fs->GetRoot());
-
- auto link2 = fs->PutUrl(url, {});
-
- UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
- UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link2->GetStorageFileName());
- UNIT_ASSERT_VALUES_EQUAL(link1->GetMd5(), link2->GetMd5());
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link2->GetPath());
-
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
- }
-
+
+ auto url = server->GetUrl();
+ auto link1 = fs->PutUrl(url, {});
+
+ RemoveUrlMeta(fs->GetRoot());
+
+ auto link2 = fs->PutUrl(url, {});
+
+ UNIT_ASSERT_VALUES_EQUAL(2, downloadCount);
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link2->GetStorageFileName());
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetMd5(), link2->GetMd5());
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link2->GetPath());
+
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link1->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL("ABC", ReadFileContent(link2->GetPath()));
+ }
+
Y_UNIT_TEST(Md5ForPutFiles) {
- TString currentContent = "ABC";
-
+ TString currentContent = "ABC";
+
TFileStoragePtr fs = CreateTestFS();
-
- TTempFileHandle h1;
- h1.Write("ABC", 3);
- const TString abcMd5 = "902fbdd2b1df0c4f70b4a5d23525e932";
- // no hardlinks to existing file in storage
- auto link1 = fs->PutInline("ABCD");
- auto link2 = fs->PutFile(h1.GetName());
-
- // hardlinks
- TTempFileHandle h2;
- h2.Write("ABCD", 4);
- auto link3 = fs->PutInline("ABC");
- auto link4 = fs->PutFile(h2.GetName());
-
- UNIT_ASSERT_VALUES_EQUAL(link1->GetMd5(), link4->GetMd5());
- UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link4->GetStorageFileName());
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link4->GetPath());
-
- UNIT_ASSERT_VALUES_EQUAL(link2->GetMd5(), link3->GetMd5());
- UNIT_ASSERT_VALUES_EQUAL(link2->GetStorageFileName(), link3->GetStorageFileName());
- UNIT_ASSERT_VALUES_UNEQUAL(link2->GetPath(), link3->GetPath());
-
- UNIT_ASSERT_VALUES_UNEQUAL(link1->GetMd5(), link2->GetMd5());
- UNIT_ASSERT_VALUES_UNEQUAL(link3->GetMd5(), link4->GetMd5());
- }
-
+
+ TTempFileHandle h1;
+ h1.Write("ABC", 3);
+ const TString abcMd5 = "902fbdd2b1df0c4f70b4a5d23525e932";
+ // no hardlinks to existing file in storage
+ auto link1 = fs->PutInline("ABCD");
+ auto link2 = fs->PutFile(h1.GetName());
+
+ // hardlinks
+ TTempFileHandle h2;
+ h2.Write("ABCD", 4);
+ auto link3 = fs->PutInline("ABC");
+ auto link4 = fs->PutFile(h2.GetName());
+
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetMd5(), link4->GetMd5());
+ UNIT_ASSERT_VALUES_EQUAL(link1->GetStorageFileName(), link4->GetStorageFileName());
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetPath(), link4->GetPath());
+
+ UNIT_ASSERT_VALUES_EQUAL(link2->GetMd5(), link3->GetMd5());
+ UNIT_ASSERT_VALUES_EQUAL(link2->GetStorageFileName(), link3->GetStorageFileName());
+ UNIT_ASSERT_VALUES_UNEQUAL(link2->GetPath(), link3->GetPath());
+
+ UNIT_ASSERT_VALUES_UNEQUAL(link1->GetMd5(), link2->GetMd5());
+ UNIT_ASSERT_VALUES_UNEQUAL(link3->GetMd5(), link4->GetMd5());
+ }
+
Y_UNIT_TEST(NoUrlDownloadRetryOnBadCode) {
- auto server = CreateTestHttpServer();
-
- int downloadCount = 0;
- TString currentContent = "ABC";
- server->SetRequestHandler([&](auto& request) {
- UNIT_ASSERT(!request.IfNoneMatch);
- ++downloadCount;
- return TTestHttpServer::TReply::Forbidden();
- });
-
- TFileStorageConfig params;
- params.SetRetryCount(3);
+ auto server = CreateTestHttpServer();
+
+ int downloadCount = 0;
+ TString currentContent = "ABC";
+ server->SetRequestHandler([&](auto& request) {
+ UNIT_ASSERT(!request.IfNoneMatch);
+ ++downloadCount;
+ return TTestHttpServer::TReply::Forbidden();
+ });
+
+ TFileStorageConfig params;
+ params.SetRetryCount(3);
TFileStoragePtr fs = CreateTestFS(params);
-
- auto url = server->GetUrl();
-
- UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, {}), std::exception, "FileStorage: Failed to download file by URL");
- // currently this test does not work and we retry even if forbidden code is returned
- // todo: optimize this
- UNIT_ASSERT_VALUES_EQUAL(3, downloadCount);
- }
-
- Y_UNIT_TEST(PutEmptyFiles) {
- auto server = CreateTestHttpServer();
-
- TString currentETag = "TAG_1";
- TString currentContent = "";
-
- server->SetRequestHandler([&](auto& ) {
- return TTestHttpServer::TReply::OkETag(currentContent, currentETag, 0);
- });
-
+
+ auto url = server->GetUrl();
+
+ UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, {}), std::exception, "FileStorage: Failed to download file by URL");
+ // currently this test does not work and we retry even if forbidden code is returned
+ // todo: optimize this
+ UNIT_ASSERT_VALUES_EQUAL(3, downloadCount);
+ }
+
+ Y_UNIT_TEST(PutEmptyFiles) {
+ auto server = CreateTestHttpServer();
+
+ TString currentETag = "TAG_1";
+ TString currentContent = "";
+
+ server->SetRequestHandler([&](auto& ) {
+ return TTestHttpServer::TReply::OkETag(currentContent, currentETag, 0);
+ });
+
TFileStoragePtr fs = CreateTestFS();
-
- auto url = server->GetUrl();
-
- auto link1 = fs->PutUrl(url, {});
- auto link2 = fs->PutInline("");
-
- TTempFileHandle tmpFile;
- auto link3 = fs->PutFile(tmpFile.GetName());
- const TString emptyStringMd5 = "d41d8cd98f00b204e9800998ecf8427e";
-
- for (auto link : { link1, link2, link3 }) {
- UNIT_ASSERT_VALUES_EQUAL("", ReadFileContent(link->GetPath()));
- UNIT_ASSERT_VALUES_EQUAL(emptyStringMd5, link->GetMd5());
- }
- }
-
- Y_UNIT_TEST(BadContentLength) {
- auto server = CreateTestHttpServer();
-
- int downloadCount = 0;
- TString currentContent = "ABC";
- server->SetRequestHandler([&](auto&) {
- ++downloadCount;
- return TTestHttpServer::TReply::Ok(currentContent, 10);
- });
-
- TFileStorageConfig params;
- params.SetRetryCount(3);
+
+ auto url = server->GetUrl();
+
+ auto link1 = fs->PutUrl(url, {});
+ auto link2 = fs->PutInline("");
+
+ TTempFileHandle tmpFile;
+ auto link3 = fs->PutFile(tmpFile.GetName());
+ const TString emptyStringMd5 = "d41d8cd98f00b204e9800998ecf8427e";
+
+ for (auto link : { link1, link2, link3 }) {
+ UNIT_ASSERT_VALUES_EQUAL("", ReadFileContent(link->GetPath()));
+ UNIT_ASSERT_VALUES_EQUAL(emptyStringMd5, link->GetMd5());
+ }
+ }
+
+ Y_UNIT_TEST(BadContentLength) {
+ auto server = CreateTestHttpServer();
+
+ int downloadCount = 0;
+ TString currentContent = "ABC";
+ server->SetRequestHandler([&](auto&) {
+ ++downloadCount;
+ return TTestHttpServer::TReply::Ok(currentContent, 10);
+ });
+
+ TFileStorageConfig params;
+ params.SetRetryCount(3);
TFileStoragePtr fs = CreateTestFS(params);
-
- auto url = server->GetUrl();
-
- UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, {}), std::exception, "Size mismatch while downloading url http");
- UNIT_ASSERT_VALUES_EQUAL(3, downloadCount);
- }
-
- Y_UNIT_TEST(AllowedUrls) {
- auto server = CreateTestHttpServer();
-
- TString currentContent = "ABC";
- server->SetRequestHandler([&](auto&) {
- return TTestHttpServer::TReply::Ok(currentContent);
- });
-
- auto url = server->GetUrl();
-
+
+ auto url = server->GetUrl();
+
+ UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, {}), std::exception, "Size mismatch while downloading url http");
+ UNIT_ASSERT_VALUES_EQUAL(3, downloadCount);
+ }
+
+ Y_UNIT_TEST(AllowedUrls) {
+ auto server = CreateTestHttpServer();
+
+ TString currentContent = "ABC";
+ server->SetRequestHandler([&](auto&) {
+ return TTestHttpServer::TReply::Ok(currentContent);
+ });
+
+ auto url = server->GetUrl();
+
{
// not in whitelist
TFileStorageConfig params;
params.AddAllowedUrlPatterns("^XXXX$");
TFileStoragePtr fs = CreateTestFS(params);
-
+
UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, {}), std::exception, "It is not allowed to download url http://localhost:");
}
-
+
{
// have in whitelist
TFileStorageConfig params;
params.SetSocketTimeoutMs(4000);
params.AddAllowedUrlPatterns("^http://localhost:");
TFileStoragePtr fs = CreateTestFS(params);
-
+
auto link = fs->PutUrl(url, {});
UNIT_ASSERT_VALUES_EQUAL(currentContent, ReadFileContent(link->GetPath()));
}
-
+
{
// have eaxtra url in whitelist
TFileStorageConfig params;
@@ -506,21 +506,21 @@ Y_UNIT_TEST_SUITE(TFileStorageTests) {
auto link = fs->PutUrl(url, {});
UNIT_ASSERT_VALUES_EQUAL(currentContent, ReadFileContent(link->GetPath()));
}
- }
-
- Y_UNIT_TEST(SocketTimeout) {
- auto server = CreateTestHttpServer();
-
- server->SetRequestHandler([&](auto& ) {
- Sleep(TDuration::Seconds(2));
- return TTestHttpServer::TReply::Ok("ABC");
- });
-
- TFileStorageConfig params;
- params.SetSocketTimeoutMs(1000);
+ }
+
+ Y_UNIT_TEST(SocketTimeout) {
+ auto server = CreateTestHttpServer();
+
+ server->SetRequestHandler([&](auto& ) {
+ Sleep(TDuration::Seconds(2));
+ return TTestHttpServer::TReply::Ok("ABC");
+ });
+
+ TFileStorageConfig params;
+ params.SetSocketTimeoutMs(1000);
TFileStoragePtr fs = CreateTestFS(params);
-
- auto url = server->GetUrl();
- UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, {}), std::exception, "can not read from socket input stream");
- }
-}
+
+ auto url = server->GetUrl();
+ UNIT_ASSERT_EXCEPTION_CONTAINS(fs->PutUrl(url, {}), std::exception, "can not read from socket input stream");
+ }
+}
diff --git a/ydb/library/yql/core/file_storage/http_download/pattern_group.cpp b/ydb/library/yql/core/file_storage/http_download/pattern_group.cpp
index f60ec107be..a30bf53829 100644
--- a/ydb/library/yql/core/file_storage/http_download/pattern_group.cpp
+++ b/ydb/library/yql/core/file_storage/http_download/pattern_group.cpp
@@ -1,34 +1,34 @@
#include <ydb/library/yql/core/file_storage/http_download/pattern_group.h>
-
-namespace NYql {
-
-TPatternGroup::TPatternGroup(const TVector<TString>& patterns) {
- for (auto& p : patterns) {
- Add(p);
- }
-}
-
-void TPatternGroup::Add(const TString& pattern) {
- auto it = CompiledPatterns.find(pattern);
- if (it != CompiledPatterns.end()) {
- return;
- }
-
- CompiledPatterns.emplace(pattern, TRegExMatch(pattern));
-}
-
-bool TPatternGroup::IsEmpty() const {
- return CompiledPatterns.empty();
-}
-
-bool TPatternGroup::Match(const TString& s) const {
- for (auto& p : CompiledPatterns) {
- if (p.second.Match(s.c_str())) {
- return true;
- }
- }
-
- return false;
-}
-
-}
+
+namespace NYql {
+
+TPatternGroup::TPatternGroup(const TVector<TString>& patterns) {
+ for (auto& p : patterns) {
+ Add(p);
+ }
+}
+
+void TPatternGroup::Add(const TString& pattern) {
+ auto it = CompiledPatterns.find(pattern);
+ if (it != CompiledPatterns.end()) {
+ return;
+ }
+
+ CompiledPatterns.emplace(pattern, TRegExMatch(pattern));
+}
+
+bool TPatternGroup::IsEmpty() const {
+ return CompiledPatterns.empty();
+}
+
+bool TPatternGroup::Match(const TString& s) const {
+ for (auto& p : CompiledPatterns) {
+ if (p.second.Match(s.c_str())) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+}
diff --git a/ydb/library/yql/core/file_storage/http_download/pattern_group.h b/ydb/library/yql/core/file_storage/http_download/pattern_group.h
index 53d0d64a7f..38007e5a95 100644
--- a/ydb/library/yql/core/file_storage/http_download/pattern_group.h
+++ b/ydb/library/yql/core/file_storage/http_download/pattern_group.h
@@ -1,20 +1,20 @@
-#pragma once
-
+#pragma once
+
#include <library/cpp/regex/pcre/regexp.h>
-#include <util/generic/map.h>
-#include <util/generic/vector.h>
-
-namespace NYql {
-
-class TPatternGroup {
-public:
- explicit TPatternGroup(const TVector<TString>& patterns = {});
- void Add(const TString& pattern);
- bool IsEmpty() const;
- bool Match(const TString& s) const;
-
-private:
- TMap<TString, TRegExMatch> CompiledPatterns;
-};
-
-}
+#include <util/generic/map.h>
+#include <util/generic/vector.h>
+
+namespace NYql {
+
+class TPatternGroup {
+public:
+ explicit TPatternGroup(const TVector<TString>& patterns = {});
+ void Add(const TString& pattern);
+ bool IsEmpty() const;
+ bool Match(const TString& s) const;
+
+private:
+ TMap<TString, TRegExMatch> CompiledPatterns;
+};
+
+}
diff --git a/ydb/library/yql/core/file_storage/http_download/pattern_group_ut.cpp b/ydb/library/yql/core/file_storage/http_download/pattern_group_ut.cpp
index 1b917252c1..cda028351c 100644
--- a/ydb/library/yql/core/file_storage/http_download/pattern_group_ut.cpp
+++ b/ydb/library/yql/core/file_storage/http_download/pattern_group_ut.cpp
@@ -1,36 +1,36 @@
-#include "pattern_group.h"
+#include "pattern_group.h"
#include <library/cpp/testing/unittest/registar.h>
-
-using namespace NYql;
-
-namespace {
-void Check(const TPatternGroup& g, const TString& url, bool expectedResult) {
- UNIT_ASSERT_C(g.Match(url) == expectedResult, url);
-}
-
-void CheckSuccess(const TPatternGroup& g, const TString& url) {
- Check(g, url, true);
-}
-
-void CheckFailure(const TPatternGroup& g, const TString& url) {
- Check(g, url, false);
-}
-}
-
-Y_UNIT_TEST_SUITE(TPatternGroupTests) {
- Y_UNIT_TEST(All) {
- TPatternGroup g;
- UNIT_ASSERT(g.IsEmpty());
-
- g.Add(R"XXX(^https://[\w-]+\.yt\.yandex-team\.ru/)XXX");
- g.Add(R"XXX(^https://(paste|storage|nirvana|grafana|bb|fml)\.yandex-team\.ru/)XXX");
- UNIT_ASSERT(!g.IsEmpty());
-
- CheckSuccess(g, "https://seneca-sas.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//tmp/bsistat02i_202624_1523866684_inclusion_already_moderating");
- CheckSuccess(g, "https://paste.yandex-team.ru/727063/text");
-
- CheckFailure(g, "https://hahn.yt.yandex-team.ru:80/api/v3/read_file");
- CheckFailure(g, "http://ya.ru");
- }
-}
+
+using namespace NYql;
+
+namespace {
+void Check(const TPatternGroup& g, const TString& url, bool expectedResult) {
+ UNIT_ASSERT_C(g.Match(url) == expectedResult, url);
+}
+
+void CheckSuccess(const TPatternGroup& g, const TString& url) {
+ Check(g, url, true);
+}
+
+void CheckFailure(const TPatternGroup& g, const TString& url) {
+ Check(g, url, false);
+}
+}
+
+Y_UNIT_TEST_SUITE(TPatternGroupTests) {
+ Y_UNIT_TEST(All) {
+ TPatternGroup g;
+ UNIT_ASSERT(g.IsEmpty());
+
+ g.Add(R"XXX(^https://[\w-]+\.yt\.yandex-team\.ru/)XXX");
+ g.Add(R"XXX(^https://(paste|storage|nirvana|grafana|bb|fml)\.yandex-team\.ru/)XXX");
+ UNIT_ASSERT(!g.IsEmpty());
+
+ CheckSuccess(g, "https://seneca-sas.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//tmp/bsistat02i_202624_1523866684_inclusion_already_moderating");
+ CheckSuccess(g, "https://paste.yandex-team.ru/727063/text");
+
+ CheckFailure(g, "https://hahn.yt.yandex-team.ru:80/api/v3/read_file");
+ CheckFailure(g, "http://ya.ru");
+ }
+}
diff --git a/ydb/library/yql/core/file_storage/proto/file_storage.proto b/ydb/library/yql/core/file_storage/proto/file_storage.proto
index c8fa642932..67c461b072 100644
--- a/ydb/library/yql/core/file_storage/proto/file_storage.proto
+++ b/ydb/library/yql/core/file_storage/proto/file_storage.proto
@@ -10,13 +10,13 @@ message TFileStorageConfig {
optional uint32 MaxFiles = 2 [default = 1000]; // Maximum number of files in the storage
optional uint32 MaxSizeMb = 3 [default = 100]; // Maximum total size of all files in the storage
repeated TSchemeTranslate CustomSchemes = 4;
- optional uint32 Threads = 5 [default = 1]; // Number of download threads for async downloading
- optional uint32 RetryCount = 6 [default = 0]; // Number of additional attempts to download file
- optional uint32 RetryDelayMs = 7 [default = 1000]; // Delay in ms between attempts to download file
- repeated string AllowedUrlPatterns = 8; // Whitelist of url regexps; disabled if empty
+ optional uint32 Threads = 5 [default = 1]; // Number of download threads for async downloading
+ optional uint32 RetryCount = 6 [default = 0]; // Number of additional attempts to download file
+ optional uint32 RetryDelayMs = 7 [default = 1000]; // Delay in ms between attempts to download file
+ repeated string AllowedUrlPatterns = 8; // Whitelist of url regexps; disabled if empty
repeated string ExternalAllowedUrlPatterns = 12; // Whitelist of url regexps for external users; disabled if empty
- optional uint32 SocketTimeoutMs = 9 [default = 300000];
- optional string ArcSshUser = 10;
- optional string ArcSshPkPath = 11;
+ optional uint32 SocketTimeoutMs = 9 [default = 300000];
+ optional string ArcSshUser = 10;
+ optional string ArcSshPkPath = 11;
optional string ArcTokenPath = 13;
}
diff --git a/ydb/library/yql/core/file_storage/storage.cpp b/ydb/library/yql/core/file_storage/storage.cpp
index 247bff5242..7a146694ed 100644
--- a/ydb/library/yql/core/file_storage/storage.cpp
+++ b/ydb/library/yql/core/file_storage/storage.cpp
@@ -5,13 +5,13 @@
#include <ydb/library/yql/utils/proc_alive.h>
#include <library/cpp/digest/md5/md5.h>
-
+
#include <util/folder/dirut.h>
#include <util/generic/algorithm.h>
#include <util/generic/vector.h>
#include <util/generic/yexception.h>
#include <util/generic/ptr.h>
-#include <util/generic/utility.h>
+#include <util/generic/utility.h>
#include <util/system/file.h>
#include <util/system/file_lock.h>
#include <util/system/fs.h>
@@ -52,20 +52,20 @@ TFsPath ToFilePath(const TString& path)
} // namespace
-TFileLink::TFileLink(const TFsPath& path, const TString& storageFileName, ui64 size, const TString& md5, bool deleteOnDestroy)
+TFileLink::TFileLink(const TFsPath& path, const TString& storageFileName, ui64 size, const TString& md5, bool deleteOnDestroy)
: Path(path)
, StorageFileName(storageFileName)
, Size(size)
- , Md5(md5)
- , DeleteOnDestroy(deleteOnDestroy)
+ , Md5(md5)
+ , DeleteOnDestroy(deleteOnDestroy)
{
}
TFileLink::~TFileLink() {
- if (!DeleteOnDestroy) {
- return;
- }
-
+ if (!DeleteOnDestroy) {
+ return;
+ }
+
YQL_LOG(INFO) << "Destroying TFileLink for " << Path.GetPath().Quote();
try {
Path.ForceDelete();
@@ -75,37 +75,37 @@ TFileLink::~TFileLink() {
}
TFileLinkPtr CreateFakeFileLink(const TFsPath& path, const TString& md5, bool deleteOnDestroy) {
- if (!path.Exists()) {
- ythrow yexception() << "Unable to create file link for non-existent file " << path.GetPath().Quote();
- }
-
- TString effectiveMd5 = md5;
- if (!effectiveMd5) {
- effectiveMd5 = MD5::File(path);
- }
- const i64 size = GetFileLength(path);
- if (size == -1) {
- ythrow yexception() << "Unable to get size for file " << path.GetPath().Quote();
- }
-
+ if (!path.Exists()) {
+ ythrow yexception() << "Unable to create file link for non-existent file " << path.GetPath().Quote();
+ }
+
+ TString effectiveMd5 = md5;
+ if (!effectiveMd5) {
+ effectiveMd5 = MD5::File(path);
+ }
+ const i64 size = GetFileLength(path);
+ if (size == -1) {
+ ythrow yexception() << "Unable to get size for file " << path.GetPath().Quote();
+ }
+
return new TFileLink(path, effectiveMd5, size, effectiveMd5, deleteOnDestroy);
-}
-
-bool SetCacheFilePermissionsNoThrow(const TString& path) {
+}
+
+bool SetCacheFilePermissionsNoThrow(const TString& path) {
return Chmod(path.data(), MODE0755) == 0;
-}
-
-void SetCacheFilePermissions(const TString& path) {
- SetFilePermissions(path, MODE0755);
-}
-
-void SetFilePermissions(const TString& path, int mode) {
+}
+
+void SetCacheFilePermissions(const TString& path) {
+ SetFilePermissions(path, MODE0755);
+}
+
+void SetFilePermissions(const TString& path, int mode) {
if (Chmod(path.data(), mode)) {
TFileStat fstat(path.data());
- ythrow TSystemError() << "Failed to chmod file " << path.Quote() << ", uid = " << fstat.Uid << ", mode = " << fstat.Mode << ", new mode = " << mode;
- }
-}
-
+ ythrow TSystemError() << "Failed to chmod file " << path.Quote() << ", uid = " << fstat.Uid << ", mode = " << fstat.Mode << ", new mode = " << mode;
+ }
+}
+
class TStorage::TImpl: public TIntrusiveListItem<TImpl> {
public:
class TAtforkReinit {
@@ -135,8 +135,8 @@ public:
private:
void Reinit() {
with_lock (Mutex) {
- for (auto& v : Registered) {
- v.ResetRandom();
+ for (auto& v : Registered) {
+ v.ResetRandom();
}
}
}
@@ -160,8 +160,8 @@ public:
StorageDir.PathSplit();
ProcessTempDir.PathSplit();
- StorageDir.MkDirs(MODE0711);
- ProcessTempDir.MkDirs(MODE0711);
+ StorageDir.MkDirs(MODE0711);
+ ProcessTempDir.MkDirs(MODE0711);
#ifdef _linux_
ProcessTempDirLock.Reset(new TFileLock(ProcessTempDir / ".lockfile"));
ProcessTempDirLock->Acquire();
@@ -198,16 +198,16 @@ public:
return ProcessTempDir;
}
- TFileLinkPtr Put(const TString& storageFileName, const TString& outFileName, const TString& md5, const TStorage::TDataPuller& puller) {
+ TFileLinkPtr Put(const TString& storageFileName, const TString& outFileName, const TString& md5, const TStorage::TDataPuller& puller) {
bool newFileAdded = false;
- TFileLinkPtr result = HardlinkFromStorage(storageFileName, md5, outFileName);
- if (!result) {
- TFsPath storageFile = StorageDir / storageFileName;
- TFsPath hardlinkFile = ProcessTempDir / (outFileName ? outFileName : GetTempName());
- Y_ENSURE(!hardlinkFile.Exists(), "FileStorage: temporary file " << hardlinkFile.GetPath().Quote() << " already exists");
-
- ui64 fileSize = 0;
- TString pullerMd5; // overrides input arg 'md5'
+ TFileLinkPtr result = HardlinkFromStorage(storageFileName, md5, outFileName);
+ if (!result) {
+ TFsPath storageFile = StorageDir / storageFileName;
+ TFsPath hardlinkFile = ProcessTempDir / (outFileName ? outFileName : GetTempName());
+ Y_ENSURE(!hardlinkFile.Exists(), "FileStorage: temporary file " << hardlinkFile.GetPath().Quote() << " already exists");
+
+ ui64 fileSize = 0;
+ TString pullerMd5; // overrides input arg 'md5'
try {
std::tie(fileSize, pullerMd5) = puller(hardlinkFile);
} catch (...) {
@@ -215,97 +215,97 @@ public:
NFs::Remove(hardlinkFile);
throw;
}
- Y_ENSURE(hardlinkFile.Exists(), "FileStorage: cannot put not existing temporary path");
- Y_ENSURE(hardlinkFile.IsFile(), "FileStorage: cannot put non-file temporary path");
+ Y_ENSURE(hardlinkFile.Exists(), "FileStorage: cannot put not existing temporary path");
+ Y_ENSURE(hardlinkFile.IsFile(), "FileStorage: cannot put non-file temporary path");
SetCacheFilePermissionsNoThrow(hardlinkFile);
- if (NFs::HardLink(hardlinkFile, storageFile)) {
- AtomicIncrement(CurrentFiles);
- AtomicAdd(CurrentSize, fileSize);
- }
- // Ignore HardLink fail. Another process managed to download before us
+ if (NFs::HardLink(hardlinkFile, storageFile)) {
+ AtomicIncrement(CurrentFiles);
+ AtomicAdd(CurrentSize, fileSize);
+ }
+ // Ignore HardLink fail. Another process managed to download before us
TouchFile(storageFile.c_str());
- newFileAdded = true;
- result = MakeIntrusive<TFileLink>(hardlinkFile, storageFileName, fileSize, pullerMd5);
+ newFileAdded = true;
+ result = MakeIntrusive<TFileLink>(hardlinkFile, storageFileName, fileSize, pullerMd5);
}
- YQL_LOG(INFO) << "Using " << (newFileAdded ? "new" : "existing") << " storage file " << result->GetStorageFileName().Quote()
- << ", temp path: " << result->GetPath().GetPath().Quote()
- << ", size: " << result->GetSize();
+ YQL_LOG(INFO) << "Using " << (newFileAdded ? "new" : "existing") << " storage file " << result->GetStorageFileName().Quote()
+ << ", temp path: " << result->GetPath().GetPath().Quote()
+ << ", size: " << result->GetSize();
if (newFileAdded) {
Cleanup();
}
- return result;
+ return result;
}
- TFileLinkPtr HardlinkFromStorage(const TString& existingStorageFileName, const TString& storageFileMd5, const TString& outFileName) {
- TFsPath storageFile = StorageDir / existingStorageFileName;
- TFsPath hardlinkFile = ProcessTempDir / (outFileName ? outFileName : GetTempName());
- Y_ENSURE(!hardlinkFile.Exists(), "FileStorage: temporary file " << hardlinkFile.GetPath().Quote() << " already exists");
-
- if (!NFs::HardLink(storageFile, hardlinkFile)) {
- return nullptr;
- }
-
+ TFileLinkPtr HardlinkFromStorage(const TString& existingStorageFileName, const TString& storageFileMd5, const TString& outFileName) {
+ TFsPath storageFile = StorageDir / existingStorageFileName;
+ TFsPath hardlinkFile = ProcessTempDir / (outFileName ? outFileName : GetTempName());
+ Y_ENSURE(!hardlinkFile.Exists(), "FileStorage: temporary file " << hardlinkFile.GetPath().Quote() << " already exists");
+
+ if (!NFs::HardLink(storageFile, hardlinkFile)) {
+ return nullptr;
+ }
+
TouchFile(storageFile.c_str());
- SetCacheFilePermissionsNoThrow(hardlinkFile);
-
+ SetCacheFilePermissionsNoThrow(hardlinkFile);
+
const i64 fileSize = GetFileLength(hardlinkFile);
if (fileSize < 0) {
ythrow yexception() << "Unable to get size for file " << hardlinkFile.GetPath().Quote();
}
- TString md5 = storageFileMd5;
- if (!md5) {
- // could happen rarely
- YQL_LOG(WARN) << "Rebuilding MD5 for file " << hardlinkFile.GetPath().Quote() << ", storage file " << existingStorageFileName << ". Usually it means file was downloaded via HTTP by another process and we just hardlinked it";
- md5 = MD5::File(hardlinkFile);
- }
-
- return new TFileLink(hardlinkFile, existingStorageFileName, fileSize, md5);
- }
-
- void MoveToStorage(const TFsPath& src, const TString& dstStorageFileName) {
- TFsPath dstStorageFile = StorageDir / dstStorageFileName;
- const bool prevFileExisted = dstStorageFile.Exists();
+ TString md5 = storageFileMd5;
+ if (!md5) {
+ // could happen rarely
+ YQL_LOG(WARN) << "Rebuilding MD5 for file " << hardlinkFile.GetPath().Quote() << ", storage file " << existingStorageFileName << ". Usually it means file was downloaded via HTTP by another process and we just hardlinked it";
+ md5 = MD5::File(hardlinkFile);
+ }
+
+ return new TFileLink(hardlinkFile, existingStorageFileName, fileSize, md5);
+ }
+
+ void MoveToStorage(const TFsPath& src, const TString& dstStorageFileName) {
+ TFsPath dstStorageFile = StorageDir / dstStorageFileName;
+ const bool prevFileExisted = dstStorageFile.Exists();
const i64 prevFileSize = Max<i64>(0, GetFileLength(dstStorageFile.c_str()));
-
- if (!NFs::Rename(src, dstStorageFile)) {
- ythrow yexception() << "Failed to rename file from " << src << " to " << dstStorageFile;
- }
+
+ if (!NFs::Rename(src, dstStorageFile)) {
+ ythrow yexception() << "Failed to rename file from " << src << " to " << dstStorageFile;
+ }
SetCacheFilePermissionsNoThrow(dstStorageFile);
-
+
const i64 newFileSize = Max<i64>(0, GetFileLength(dstStorageFile.c_str()));
-
- if (!prevFileExisted) {
- AtomicIncrement(CurrentFiles);
- }
-
- AtomicAdd(CurrentSize, newFileSize - prevFileSize);
- }
-
- bool RemoveFromStorage(const TString& existingStorageFileName) {
- TFsPath storageFile = StorageDir / existingStorageFileName;
- if (!storageFile.Exists()) {
- // can't update statistics
- // not sure we had this file at all
- return false;
- }
-
- // file could be removed by another process, handle this situation
+
+ if (!prevFileExisted) {
+ AtomicIncrement(CurrentFiles);
+ }
+
+ AtomicAdd(CurrentSize, newFileSize - prevFileSize);
+ }
+
+ bool RemoveFromStorage(const TString& existingStorageFileName) {
+ TFsPath storageFile = StorageDir / existingStorageFileName;
+ if (!storageFile.Exists()) {
+ // can't update statistics
+ // not sure we had this file at all
+ return false;
+ }
+
+ // file could be removed by another process, handle this situation
const i64 prevFileSize = Max<i64>(0, GetFileLength(storageFile.c_str()));
- const bool result = NFs::Remove(storageFile);
-
- if (result || !storageFile.Exists()) {
- AtomicDecrement(CurrentFiles);
- AtomicAdd(CurrentSize, -prevFileSize);
- }
-
- return result;
- }
-
+ const bool result = NFs::Remove(storageFile);
+
+ if (result || !storageFile.Exists()) {
+ AtomicDecrement(CurrentFiles);
+ AtomicAdd(CurrentSize, -prevFileSize);
+ }
+
+ return result;
+ }
+
ui64 GetOccupiedSize() const {
return AtomicGet(CurrentSize);
}
@@ -314,12 +314,12 @@ public:
return AtomicGet(CurrentFiles);
}
- TString GetTempName() {
- with_lock(RndLock) {
- return Rnd.GenGuid();
- }
- }
-
+ TString GetTempName() {
+ with_lock(RndLock) {
+ return Rnd.GenGuid();
+ }
+ }
+
private:
void LoadStats() {
TVector<TString> names;
@@ -337,7 +337,7 @@ private:
++actualFiles;
actualSize += stat.Size;
} else if (stat.IsDir() && TryFromString(name, oldPid)) {
- if (!IsProcessAlive(oldPid)) {
+ if (!IsProcessAlive(oldPid)) {
// cleanup of previously not cleaned hardlinks directory
try {
#ifdef _linux_
@@ -427,9 +427,9 @@ private:
}
void ResetRandom() {
- with_lock(RndLock) {
- Rnd.ResetSeed();
- }
+ with_lock(RndLock) {
+ Rnd.ResetSeed();
+ }
}
private:
@@ -443,7 +443,7 @@ private:
TAtomic CurrentFiles = 0;
TAtomic CurrentSize = 0;
TMutex RndLock;
- TRandGuid Rnd;
+ TRandGuid Rnd;
};
TStorage::TStorage(size_t maxFiles, ui64 maxSize, const TString& storagePath)
@@ -465,26 +465,26 @@ TFsPath TStorage::GetTemp() const
return Impl->GetTemp();
}
-TFileLinkPtr TStorage::Put(const TString& storageFileName, const TString& outFileName, const TString& md5, const TDataPuller& puller)
-{
- return Impl->Put(storageFileName, outFileName, md5, puller);
-}
-
-TFileLinkPtr TStorage::HardlinkFromStorage(const TString& existingStorageFileName, const TString& storageFileMd5, const TString& outFileName)
-{
- return Impl->HardlinkFromStorage(existingStorageFileName, storageFileMd5, outFileName);
-}
-
-void TStorage::MoveToStorage(const TFsPath& src, const TString& dstStorageFileName)
+TFileLinkPtr TStorage::Put(const TString& storageFileName, const TString& outFileName, const TString& md5, const TDataPuller& puller)
{
- return Impl->MoveToStorage(src, dstStorageFileName);
-}
-
-bool TStorage::RemoveFromStorage(const TString& existingStorageFileName)
-{
- return Impl->RemoveFromStorage(existingStorageFileName);
+ return Impl->Put(storageFileName, outFileName, md5, puller);
}
+TFileLinkPtr TStorage::HardlinkFromStorage(const TString& existingStorageFileName, const TString& storageFileMd5, const TString& outFileName)
+{
+ return Impl->HardlinkFromStorage(existingStorageFileName, storageFileMd5, outFileName);
+}
+
+void TStorage::MoveToStorage(const TFsPath& src, const TString& dstStorageFileName)
+{
+ return Impl->MoveToStorage(src, dstStorageFileName);
+}
+
+bool TStorage::RemoveFromStorage(const TString& existingStorageFileName)
+{
+ return Impl->RemoveFromStorage(existingStorageFileName);
+}
+
ui64 TStorage::GetOccupiedSize() const
{
return Impl->GetOccupiedSize();
@@ -495,8 +495,8 @@ size_t TStorage::GetCount() const
return Impl->GetCount();
}
-TString TStorage::GetTempName()
-{
- return Impl->GetTempName();
-}
+TString TStorage::GetTempName()
+{
+ return Impl->GetTempName();
+}
} // NYql
diff --git a/ydb/library/yql/core/file_storage/storage.h b/ydb/library/yql/core/file_storage/storage.h
index 8ab42a69a1..ed77bb5320 100644
--- a/ydb/library/yql/core/file_storage/storage.h
+++ b/ydb/library/yql/core/file_storage/storage.h
@@ -11,26 +11,26 @@ namespace NYql {
class TFileLink: public TThrRefBase {
public:
- TFileLink(const TFsPath& path, const TString& storageFileName, ui64 size, const TString& md5, bool deleteOnDestroy = true);
+ TFileLink(const TFsPath& path, const TString& storageFileName, ui64 size, const TString& md5, bool deleteOnDestroy = true);
~TFileLink();
const TString& GetStorageFileName() const { return StorageFileName; }
const TFsPath& GetPath() const { return Path; }
ui64 GetSize() const { return Size; }
- const TString& GetMd5() const { return Md5; }
+ const TString& GetMd5() const { return Md5; }
private:
- const TFsPath Path;
- const TString StorageFileName;
- const ui64 Size;
- const TString Md5;
- const bool DeleteOnDestroy;
+ const TFsPath Path;
+ const TString StorageFileName;
+ const ui64 Size;
+ const TString Md5;
+ const bool DeleteOnDestroy;
};
using TFileLinkPtr = TIntrusivePtr<TFileLink>;
TFileLinkPtr CreateFakeFileLink(const TFsPath& path, const TString& md5 = "", bool deleteOnDestroy = false);
-
+
/* File cache with limits by count and by occupied size.
The same file can be added multiple times.
It is safe to add the same file from multiple threads/processes simultaneously.
@@ -39,8 +39,8 @@ TFileLinkPtr CreateFakeFileLink(const TFsPath& path, const TString& md5 = "", bo
class TStorage {
public:
// This function is called by the storage to transfer user data to the provided temporary file path
- // Returns content size and md5
- using TDataPuller = std::function<std::pair<ui64, TString> (const TFsPath& dstPath)>;
+ // Returns content size and md5
+ using TDataPuller = std::function<std::pair<ui64, TString> (const TFsPath& dstPath)>;
/* Constructs the storage with the specified limits.
storagePath can be empty - a temporary directory will be used in this case.
@@ -53,29 +53,29 @@ public:
// Returns temp storage directory
TFsPath GetTemp() const;
// Puts the passed data to the storage with the specified storage file name.
- // The second argument outFileName specifies a name of temporary link returned from the Put(). If empty, then random guid is used.
- // Provide valid md5 if it is known in advance, otherwise pass "". It will be overridden by puller result
+ // The second argument outFileName specifies a name of temporary link returned from the Put(). If empty, then random guid is used.
+ // Provide valid md5 if it is known in advance, otherwise pass "". It will be overridden by puller result
// The provided puller does the actual transfer of the data to a storage file. It can take a long time.
- TFileLinkPtr Put(const TString& storageFileName, const TString& outFileName, const TString& md5, const TDataPuller& puller);
- // Returns nullptr on error
- TFileLinkPtr HardlinkFromStorage(const TString& existingStorageFileName, const TString& storageFileMd5, const TString& outFileName);
- void MoveToStorage(const TFsPath& src, const TString& dstStorageFileName);
- bool RemoveFromStorage(const TString& existingStorageFileName);
+ TFileLinkPtr Put(const TString& storageFileName, const TString& outFileName, const TString& md5, const TDataPuller& puller);
+ // Returns nullptr on error
+ TFileLinkPtr HardlinkFromStorage(const TString& existingStorageFileName, const TString& storageFileMd5, const TString& outFileName);
+ void MoveToStorage(const TFsPath& src, const TString& dstStorageFileName);
+ bool RemoveFromStorage(const TString& existingStorageFileName);
// Total size of all files in the cache
ui64 GetOccupiedSize() const;
// Total count of files in the cache
size_t GetCount() const;
- TString GetTempName();
-
+ TString GetTempName();
+
private:
class TImpl;
THolder<TImpl> Impl;
};
-constexpr int MODE0711 = S_IRWXU | S_IXGRP | S_IXOTH;
-constexpr int MODE0744 = S_IRWXU | S_IRGRP | S_IROTH;
-
-void SetCacheFilePermissions(const TString& path);
-bool SetCacheFilePermissionsNoThrow(const TString& path);
-void SetFilePermissions(const TString& path, int mode);
+constexpr int MODE0711 = S_IRWXU | S_IXGRP | S_IXOTH;
+constexpr int MODE0744 = S_IRWXU | S_IRGRP | S_IROTH;
+
+void SetCacheFilePermissions(const TString& path);
+bool SetCacheFilePermissionsNoThrow(const TString& path);
+void SetFilePermissions(const TString& path, int mode);
} // NYql
diff --git a/ydb/library/yql/core/file_storage/storage_ut.cpp b/ydb/library/yql/core/file_storage/storage_ut.cpp
index 4229abd219..8cad105539 100644
--- a/ydb/library/yql/core/file_storage/storage_ut.cpp
+++ b/ydb/library/yql/core/file_storage/storage_ut.cpp
@@ -15,7 +15,7 @@ using namespace NYql;
using namespace NThreading;
static TString DATA = "1234567890";
-static TString DATA_MD5 = "e807f1fcf82d132f9bb018ca6738a19f";
+static TString DATA_MD5 = "e807f1fcf82d132f9bb018ca6738a19f";
Y_UNIT_TEST_SUITE(TStorageTests) {
@@ -43,17 +43,17 @@ Y_UNIT_TEST_SUITE(TStorageTests) {
}
};
- TFileLinkPtr PutFile(const TString& name, TStorage& storage, const TString& tmpOutName = {}, int sleepSeconds = 0) {
- return storage.Put(name, tmpOutName, DATA_MD5, [&](const TFsPath& storagePath) {
- Sleep(TDuration::Seconds(sleepSeconds));
+ TFileLinkPtr PutFile(const TString& name, TStorage& storage, const TString& tmpOutName = {}, int sleepSeconds = 0) {
+ return storage.Put(name, tmpOutName, DATA_MD5, [&](const TFsPath& storagePath) {
+ Sleep(TDuration::Seconds(sleepSeconds));
TStringInput in(DATA);
- TUnbufferedFileOutput out(storagePath);
- return std::make_pair(TransferData(&in, &out), DATA_MD5);
+ TUnbufferedFileOutput out(storagePath);
+ return std::make_pair(TransferData(&in, &out), DATA_MD5);
});
}
TFileLinkPtr PutFileWithSleep(const TString& name, TStorage& storage) {
- return PutFile(name, storage, {}, 1);
+ return PutFile(name, storage, {}, 1);
}
Y_UNIT_TEST(Put) {
diff --git a/ydb/library/yql/core/file_storage/url_mapper.cpp b/ydb/library/yql/core/file_storage/url_mapper.cpp
index 0c646ed0d6..596f6bb6e2 100644
--- a/ydb/library/yql/core/file_storage/url_mapper.cpp
+++ b/ydb/library/yql/core/file_storage/url_mapper.cpp
@@ -1,19 +1,19 @@
-#include "url_mapper.h"
-
-namespace NYql {
-
-void TUrlMapper::AddMapping(const TString& pattern, const TString& targetUrl) {
- CustomSchemes.push_back(TCustomScheme(pattern, targetUrl));
-}
-
-bool TUrlMapper::MapUrl(const TString& url, TString& mappedUrl) const {
- for (const auto& sc : CustomSchemes) {
+#include "url_mapper.h"
+
+namespace NYql {
+
+void TUrlMapper::AddMapping(const TString& pattern, const TString& targetUrl) {
+ CustomSchemes.push_back(TCustomScheme(pattern, targetUrl));
+}
+
+bool TUrlMapper::MapUrl(const TString& url, TString& mappedUrl) const {
+ for (const auto& sc : CustomSchemes) {
if (sc.Pattern.Match(url.data())) {
mappedUrl = TRegExSubst(sc.TargetUrlSubst).Replace(url.data());
- return true;
- }
- }
- return false;
-}
-
-}
+ return true;
+ }
+ }
+ return false;
+}
+
+}
diff --git a/ydb/library/yql/core/file_storage/url_mapper.h b/ydb/library/yql/core/file_storage/url_mapper.h
index f6438ecca3..9a5e3191e6 100644
--- a/ydb/library/yql/core/file_storage/url_mapper.h
+++ b/ydb/library/yql/core/file_storage/url_mapper.h
@@ -1,32 +1,32 @@
-#pragma once
-
+#pragma once
+
#include <library/cpp/regex/pcre/regexp.h>
-#include <util/generic/vector.h>
-
-namespace NYql {
-
-class TUrlMapper {
-public:
- void AddMapping(const TString& pattern, const TString& targetUrl);
- bool MapUrl(const TString& url, TString& mappedUrl) const;
-
-private:
- struct TCustomScheme {
- TCustomScheme(const TString& pattern, const TString& url)
- : Pattern(pattern)
- , TargetUrlHolder(url)
+#include <util/generic/vector.h>
+
+namespace NYql {
+
+class TUrlMapper {
+public:
+ void AddMapping(const TString& pattern, const TString& targetUrl);
+ bool MapUrl(const TString& url, TString& mappedUrl) const;
+
+private:
+ struct TCustomScheme {
+ TCustomScheme(const TString& pattern, const TString& url)
+ : Pattern(pattern)
+ , TargetUrlHolder(url)
, TargetUrlSubst(pattern.data()) {
if (0 == TargetUrlSubst.ParseReplacement(TargetUrlHolder.data())) {
- ythrow yexception() << "Bad url replacement: " << TargetUrlHolder;
- }
- }
- TRegExMatch Pattern;
- TString TargetUrlHolder;
- TRegExSubst TargetUrlSubst;
- };
-
-private:
- TVector<TCustomScheme> CustomSchemes;
-};
-
-}
+ ythrow yexception() << "Bad url replacement: " << TargetUrlHolder;
+ }
+ }
+ TRegExMatch Pattern;
+ TString TargetUrlHolder;
+ TRegExSubst TargetUrlSubst;
+ };
+
+private:
+ TVector<TCustomScheme> CustomSchemes;
+};
+
+}
diff --git a/ydb/library/yql/core/file_storage/url_mapper_ut.cpp b/ydb/library/yql/core/file_storage/url_mapper_ut.cpp
index 287caf054c..7a44bac5ec 100644
--- a/ydb/library/yql/core/file_storage/url_mapper_ut.cpp
+++ b/ydb/library/yql/core/file_storage/url_mapper_ut.cpp
@@ -1,57 +1,57 @@
-#include "url_mapper.h"
+#include "url_mapper.h"
#include <library/cpp/testing/unittest/registar.h>
-
-using namespace NYql;
-
-namespace {
-void RemapAndCheck(const TUrlMapper& m, const TString& input, const TString& expectedOutput) {
- TString output;
- UNIT_ASSERT(m.MapUrl(input, output));
- UNIT_ASSERT_VALUES_EQUAL(output, expectedOutput);
-}
-}
-
+
+using namespace NYql;
+
+namespace {
+void RemapAndCheck(const TUrlMapper& m, const TString& input, const TString& expectedOutput) {
+ TString output;
+ UNIT_ASSERT(m.MapUrl(input, output));
+ UNIT_ASSERT_VALUES_EQUAL(output, expectedOutput);
+}
+}
+
Y_UNIT_TEST_SUITE(TUrlMapperTests) {
Y_UNIT_TEST(All) {
- TUrlMapper m;
- m.AddMapping("sbr:(?://)?(\\d+)", "http://proxy.sandbox.yandex-team.ru/$1");
-
- m.AddMapping("yt://([a-zA-Z0-9\\-_]+)/(.+)@t=([0-9A-Fa-f]+\\-[0-9A-Fa-f]+\\-[0-9A-Fa-f]+\\-[0-9A-Fa-f]+)", "https://$1.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//$2&transaction_id=$3");
- m.AddMapping("yt://([a-zA-Z0-9\\-_]+)/(.+)", "https://$1.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//$2");
-
+ TUrlMapper m;
+ m.AddMapping("sbr:(?://)?(\\d+)", "http://proxy.sandbox.yandex-team.ru/$1");
+
+ m.AddMapping("yt://([a-zA-Z0-9\\-_]+)/(.+)@t=([0-9A-Fa-f]+\\-[0-9A-Fa-f]+\\-[0-9A-Fa-f]+\\-[0-9A-Fa-f]+)", "https://$1.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//$2&transaction_id=$3");
+ m.AddMapping("yt://([a-zA-Z0-9\\-_]+)/(.+)", "https://$1.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//$2");
+
m.AddMapping("https?://yt\\.yandex(\\.net|-team\\.ru)/([a-zA-Z0-9\\-_]+)/#page=navigation&path=//(.+)", "https://$2.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//$3");
m.AddMapping("https?://yt\\.yandex(\\.net|-team\\.ru)/([a-zA-Z0-9\\-_]+)/navigation\\?path=//(.+)", "https://$2.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//$3");
-
+
m.AddMapping("https?://a\\.yandex-team\\.ru/arc/(.+)/arcadia/(.+)\\?rev=(\\d+)", "arc://$2?rev=$3&branch=$1");
- TString tmp;
- UNIT_ASSERT(!m.MapUrl("http://ya.ru", tmp));
- UNIT_ASSERT(!m.MapUrl("http://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//home", tmp));
-
- RemapAndCheck(m, "sbr:654321", "http://proxy.sandbox.yandex-team.ru/654321");
- RemapAndCheck(m, "sbr://654321", "http://proxy.sandbox.yandex-team.ru/654321");
- RemapAndCheck(m, "yt://hahn/statbox/home/ngc224/nile/tmp/libexamples-pager_ctr.soYDyrqeVMhp", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/ngc224/nile/tmp/libexamples-pager_ctr.soYDyrqeVMhp");
- // transaction guid : 4 groups of hex
- RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=9797-164f64-3fe0190-dd3c4184", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt&transaction_id=9797-164f64-3fe0190-dd3c4184");
- // transaction guid : 0-0-0-0
- RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=0-0-0-0", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt&transaction_id=0-0-0-0");
- // transaction guid with bad char z, it will be dropped
- RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=9797-164f64-3fe0190-dd3c418z", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt&transaction_id=9797-164f64-3fe0190-dd3c418");
- // transaction guid with capitals
- RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=9797-164F64-3FE0190-DD3C4184A", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt&transaction_id=9797-164F64-3FE0190-DD3C4184A");
- // transaction guid with 3 groups instead of 4
- RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=9797-164f64-3fe0190", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt@t=9797-164f64-3fe0190");
- RemapAndCheck(m, "https://yt.yandex-team.ru/hahn/#page=navigation&path=//home/yql/dev/1.txt", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//home/yql/dev/1.txt");
+ TString tmp;
+ UNIT_ASSERT(!m.MapUrl("http://ya.ru", tmp));
+ UNIT_ASSERT(!m.MapUrl("http://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//home", tmp));
+
+ RemapAndCheck(m, "sbr:654321", "http://proxy.sandbox.yandex-team.ru/654321");
+ RemapAndCheck(m, "sbr://654321", "http://proxy.sandbox.yandex-team.ru/654321");
+ RemapAndCheck(m, "yt://hahn/statbox/home/ngc224/nile/tmp/libexamples-pager_ctr.soYDyrqeVMhp", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/ngc224/nile/tmp/libexamples-pager_ctr.soYDyrqeVMhp");
+ // transaction guid : 4 groups of hex
+ RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=9797-164f64-3fe0190-dd3c4184", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt&transaction_id=9797-164f64-3fe0190-dd3c4184");
+ // transaction guid : 0-0-0-0
+ RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=0-0-0-0", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt&transaction_id=0-0-0-0");
+ // transaction guid with bad char z, it will be dropped
+ RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=9797-164f64-3fe0190-dd3c418z", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt&transaction_id=9797-164f64-3fe0190-dd3c418");
+ // transaction guid with capitals
+ RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=9797-164F64-3FE0190-DD3C4184A", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt&transaction_id=9797-164F64-3FE0190-DD3C4184A");
+ // transaction guid with 3 groups instead of 4
+ RemapAndCheck(m, "yt://hahn/statbox/home/nile/tmp/abc.txt@t=9797-164f64-3fe0190", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//statbox/home/nile/tmp/abc.txt@t=9797-164f64-3fe0190");
+ RemapAndCheck(m, "https://yt.yandex-team.ru/hahn/#page=navigation&path=//home/yql/dev/1.txt", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//home/yql/dev/1.txt");
RemapAndCheck(m, "https://yt.yandex-team.ru/hahn/navigation?path=//home/yql/dev/1.txt", "https://hahn.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//home/yql/dev/1.txt");
-
- // with dash
- RemapAndCheck(m, "yt://seneca-sas/tmp/bsistat02i_202624_1523866684_inclusion_already_moderating", "https://seneca-sas.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//tmp/bsistat02i_202624_1523866684_inclusion_already_moderating");
- // with underscore and digits
- RemapAndCheck(m, "yt://seneca_sas0123456789/tmp/bsistat02i_202624_1523866684_inclusion_already_moderating", "https://seneca_sas0123456789.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//tmp/bsistat02i_202624_1523866684_inclusion_already_moderating");
+
+ // with dash
+ RemapAndCheck(m, "yt://seneca-sas/tmp/bsistat02i_202624_1523866684_inclusion_already_moderating", "https://seneca-sas.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//tmp/bsistat02i_202624_1523866684_inclusion_already_moderating");
+ // with underscore and digits
+ RemapAndCheck(m, "yt://seneca_sas0123456789/tmp/bsistat02i_202624_1523866684_inclusion_already_moderating", "https://seneca_sas0123456789.yt.yandex-team.ru/api/v3/read_file?disposition=attachment&path=//tmp/bsistat02i_202624_1523866684_inclusion_already_moderating");
RemapAndCheck(m, "https://a.yandex-team.ru/arc/trunk/arcadia/yql/ya.make?rev=5530789", "arc://yql/ya.make?rev=5530789&branch=trunk");
RemapAndCheck(m, "https://a.yandex-team.ru/arc/branches/yql/yql-stable-2019-08-16/arcadia/yql/ya.make?rev=5530789", "arc://yql/ya.make?rev=5530789&branch=branches/yql/yql-stable-2019-08-16");
UNIT_ASSERT(!m.MapUrl("https://a.yandex-team.ru/arc/trunk/arcadia/yql/ya.make", tmp));
- }
-}
+ }
+}
diff --git a/ydb/library/yql/core/file_storage/url_meta.cpp b/ydb/library/yql/core/file_storage/url_meta.cpp
index 2dd973ea06..064856c650 100644
--- a/ydb/library/yql/core/file_storage/url_meta.cpp
+++ b/ydb/library/yql/core/file_storage/url_meta.cpp
@@ -1,68 +1,68 @@
-#include "url_meta.h"
+#include "url_meta.h"
#include <library/cpp/http/io/headers.h>
-#include <util/stream/file.h>
-#include <util/system/file.h>
-
-namespace NYql {
-
-void TUrlMeta::SaveTo(const TString& path) {
- THttpHeaders headers;
- if (ETag) {
- headers.AddHeader(THttpInputHeader("ETag", ETag));
- }
-
- if (ContentFile) {
- headers.AddHeader(THttpInputHeader("ContentFile", ContentFile));
- }
-
- if (Md5) {
- headers.AddHeader(THttpInputHeader("Md5", Md5));
- }
-
- if (LastModified) {
- headers.AddHeader(THttpInputHeader("LastModified", LastModified));
- }
-
-
- TFile outFile(path, CreateAlways | ARW | AX);
- TUnbufferedFileOutput out(outFile);
- headers.OutTo(&out);
-}
-
-void TUrlMeta::TryReadFrom(const TString& path) {
- ETag.clear();
- LastModified.clear();
- ContentFile.clear();
-
- TFileHandle fileHandle(path, OpenExisting | RdOnly | Seq);
- if (!fileHandle.IsOpen()) {
- return;
- }
-
- TFile file(fileHandle.Release(), path);
- TIFStream in(file);
- THttpHeaders headers(&in);
- for (auto it = headers.Begin(); it != headers.End(); ++it) {
+#include <util/stream/file.h>
+#include <util/system/file.h>
+
+namespace NYql {
+
+void TUrlMeta::SaveTo(const TString& path) {
+ THttpHeaders headers;
+ if (ETag) {
+ headers.AddHeader(THttpInputHeader("ETag", ETag));
+ }
+
+ if (ContentFile) {
+ headers.AddHeader(THttpInputHeader("ContentFile", ContentFile));
+ }
+
+ if (Md5) {
+ headers.AddHeader(THttpInputHeader("Md5", Md5));
+ }
+
+ if (LastModified) {
+ headers.AddHeader(THttpInputHeader("LastModified", LastModified));
+ }
+
+
+ TFile outFile(path, CreateAlways | ARW | AX);
+ TUnbufferedFileOutput out(outFile);
+ headers.OutTo(&out);
+}
+
+void TUrlMeta::TryReadFrom(const TString& path) {
+ ETag.clear();
+ LastModified.clear();
+ ContentFile.clear();
+
+ TFileHandle fileHandle(path, OpenExisting | RdOnly | Seq);
+ if (!fileHandle.IsOpen()) {
+ return;
+ }
+
+ TFile file(fileHandle.Release(), path);
+ TIFStream in(file);
+ THttpHeaders headers(&in);
+ for (auto it = headers.Begin(); it != headers.End(); ++it) {
if (it->Name() == TStringBuf("ETag")) {
- ETag = it->Value();
- continue;
- }
-
+ ETag = it->Value();
+ continue;
+ }
+
if (it->Name() == TStringBuf("ContentFile")) {
- ContentFile = it->Value();
- continue;
- }
-
+ ContentFile = it->Value();
+ continue;
+ }
+
if (it->Name() == TStringBuf("Md5")) {
- Md5 = it->Value();
- continue;
- }
-
+ Md5 = it->Value();
+ continue;
+ }
+
if (it->Name() == TStringBuf("LastModified")) {
- LastModified = it->Value();
- continue;
- }
- }
-}
-
-} // NYql
+ LastModified = it->Value();
+ continue;
+ }
+ }
+}
+
+} // NYql
diff --git a/ydb/library/yql/core/file_storage/url_meta.h b/ydb/library/yql/core/file_storage/url_meta.h
index 3121628d45..f1c7eb5839 100644
--- a/ydb/library/yql/core/file_storage/url_meta.h
+++ b/ydb/library/yql/core/file_storage/url_meta.h
@@ -1,17 +1,17 @@
-#pragma once
-
-#include <util/generic/string.h>
-
-namespace NYql {
-
-struct TUrlMeta {
- TString ETag;
- TString ContentFile;
- TString Md5;
- TString LastModified;
-
- void SaveTo(const TString& path);
- void TryReadFrom(const TString& path);
-};
-
-}
+#pragma once
+
+#include <util/generic/string.h>
+
+namespace NYql {
+
+struct TUrlMeta {
+ TString ETag;
+ TString ContentFile;
+ TString Md5;
+ TString LastModified;
+
+ void SaveTo(const TString& path);
+ void TryReadFrom(const TString& path);
+};
+
+}
diff --git a/ydb/library/yql/core/file_storage/ut/test_http_server.cpp b/ydb/library/yql/core/file_storage/ut/test_http_server.cpp
index c296fc4bef..727b50127d 100644
--- a/ydb/library/yql/core/file_storage/ut/test_http_server.cpp
+++ b/ydb/library/yql/core/file_storage/ut/test_http_server.cpp
@@ -1,152 +1,152 @@
-#include "test_http_server.h"
-
+#include "test_http_server.h"
+
#include <library/cpp/http/misc/httpcodes.h>
#include <library/cpp/http/server/http_ex.h>
#include <library/cpp/testing/unittest/registar.h>
-
-#include <util/system/atomic_ops.h>
-
-namespace NYql {
-
-class TTestHttpServer::TImpl : public THttpServer::ICallBack {
- class TRequestProcessor : public THttpClientRequestEx {
- public:
- explicit TRequestProcessor(TImpl* parent)
- : Parent_(parent)
- {
- Y_UNUSED(Parent_);
- }
-
- bool Reply(void* /*tsr*/) override {
- if (!ProcessHeaders()) {
+
+#include <util/system/atomic_ops.h>
+
+namespace NYql {
+
+class TTestHttpServer::TImpl : public THttpServer::ICallBack {
+ class TRequestProcessor : public THttpClientRequestEx {
+ public:
+ explicit TRequestProcessor(TImpl* parent)
+ : Parent_(parent)
+ {
+ Y_UNUSED(Parent_);
+ }
+
+ bool Reply(void* /*tsr*/) override {
+ if (!ProcessHeaders()) {
return true;
- }
-
- if (!RequestString.StartsWith("GET ")) {
+ }
+
+ if (!RequestString.StartsWith("GET ")) {
return true;
- }
-
- TRequest r;
- for (auto& p : ParsedHeaders) {
- if (p.first == "Authorization" && p.second.StartsWith("OAuth ")) {
- r.OAuthToken = p.second.substr(strlen("OAuth "));
- continue;
- }
-
- if (p.first == "If-None-Match") {
- r.IfNoneMatch = p.second;
- continue;
- }
-
- if (p.first == "If-Modified-Since") {
- r.IfModifiedSince = p.second;
- continue;
- }
- }
-
- auto reply = Parent_->ProcessNextRequest(r);
-
- switch (reply.Code) {
- case HTTP_OK:
- Output() << "HTTP/1.1 200 Ok\r\n";
- break;
-
- case HTTP_NOT_MODIFIED:
- Output() << "HTTP/1.1 304 Not modified\r\n";
- break;
-
- case HTTP_FORBIDDEN:
- Output() << "HTTP/1.1 403 Forbidden\r\n";
- break;
-
- default:
+ }
+
+ TRequest r;
+ for (auto& p : ParsedHeaders) {
+ if (p.first == "Authorization" && p.second.StartsWith("OAuth ")) {
+ r.OAuthToken = p.second.substr(strlen("OAuth "));
+ continue;
+ }
+
+ if (p.first == "If-None-Match") {
+ r.IfNoneMatch = p.second;
+ continue;
+ }
+
+ if (p.first == "If-Modified-Since") {
+ r.IfModifiedSince = p.second;
+ continue;
+ }
+ }
+
+ auto reply = Parent_->ProcessNextRequest(r);
+
+ switch (reply.Code) {
+ case HTTP_OK:
+ Output() << "HTTP/1.1 200 Ok\r\n";
+ break;
+
+ case HTTP_NOT_MODIFIED:
+ Output() << "HTTP/1.1 304 Not modified\r\n";
+ break;
+
+ case HTTP_FORBIDDEN:
+ Output() << "HTTP/1.1 403 Forbidden\r\n";
+ break;
+
+ default:
return true;
- }
-
- if (reply.ETag) {
- Output() << "ETag: " + reply.ETag + "\r\n";
- }
-
- if (reply.LastModified) {
- Output() << "Last-Modified: " + reply.LastModified + "\r\n";
- }
-
- if (reply.Content || reply.ContentLength) {
- const int length = reply.ContentLength.GetOrElse(reply.Content.length());
- Output() << "Content-Length: " << length << "\r\n";
- }
-
- Output() << "\r\n";
- if (reply.Content) {
- Output() << reply.Content;
- }
-
- Output().Finish();
-
- return true;
- }
-
- private:
- TImpl* Parent_ = nullptr;
- };
-
-public:
- explicit TImpl(int port)
- : HttpServer_(this, THttpServer::TOptions(port))
- , Port_(port)
- {
-
- }
-
- TClientRequest* CreateClient() override {
- return new TRequestProcessor(this);
- }
-
- void Start() {
- UNIT_ASSERT(HttpServer_.Start());
- }
-
- void Stop() {
- HttpServer_.Stop();
- }
-
- TString GetUrl() const {
- return "http://localhost:" + ToString(Port_);
- }
-
- void SetRequestHandler(TRequestHandler handler) {
- RequestHandler_ = std::move(handler);
- }
-
-private:
- TReply ProcessNextRequest(const TRequest& request) {
- return RequestHandler_(request);
- }
-
-private:
- THttpServer HttpServer_;
- const int Port_;
- TRequestHandler RequestHandler_;
-};
-
-TTestHttpServer::TTestHttpServer(int port)
- : Impl_(new TImpl(port)) {
-}
-
-TTestHttpServer::~TTestHttpServer() {
- Impl_->Stop();
-}
-
-void TTestHttpServer::Start() {
- Impl_->Start();
-}
-
-TString TTestHttpServer::GetUrl() const {
- return Impl_->GetUrl();
-}
-
-void TTestHttpServer::SetRequestHandler(TRequestHandler handler) {
- return Impl_->SetRequestHandler(std::move(handler));
-}
-
-}
+ }
+
+ if (reply.ETag) {
+ Output() << "ETag: " + reply.ETag + "\r\n";
+ }
+
+ if (reply.LastModified) {
+ Output() << "Last-Modified: " + reply.LastModified + "\r\n";
+ }
+
+ if (reply.Content || reply.ContentLength) {
+ const int length = reply.ContentLength.GetOrElse(reply.Content.length());
+ Output() << "Content-Length: " << length << "\r\n";
+ }
+
+ Output() << "\r\n";
+ if (reply.Content) {
+ Output() << reply.Content;
+ }
+
+ Output().Finish();
+
+ return true;
+ }
+
+ private:
+ TImpl* Parent_ = nullptr;
+ };
+
+public:
+ explicit TImpl(int port)
+ : HttpServer_(this, THttpServer::TOptions(port))
+ , Port_(port)
+ {
+
+ }
+
+ TClientRequest* CreateClient() override {
+ return new TRequestProcessor(this);
+ }
+
+ void Start() {
+ UNIT_ASSERT(HttpServer_.Start());
+ }
+
+ void Stop() {
+ HttpServer_.Stop();
+ }
+
+ TString GetUrl() const {
+ return "http://localhost:" + ToString(Port_);
+ }
+
+ void SetRequestHandler(TRequestHandler handler) {
+ RequestHandler_ = std::move(handler);
+ }
+
+private:
+ TReply ProcessNextRequest(const TRequest& request) {
+ return RequestHandler_(request);
+ }
+
+private:
+ THttpServer HttpServer_;
+ const int Port_;
+ TRequestHandler RequestHandler_;
+};
+
+TTestHttpServer::TTestHttpServer(int port)
+ : Impl_(new TImpl(port)) {
+}
+
+TTestHttpServer::~TTestHttpServer() {
+ Impl_->Stop();
+}
+
+void TTestHttpServer::Start() {
+ Impl_->Start();
+}
+
+TString TTestHttpServer::GetUrl() const {
+ return Impl_->GetUrl();
+}
+
+void TTestHttpServer::SetRequestHandler(TRequestHandler handler) {
+ return Impl_->SetRequestHandler(std::move(handler));
+}
+
+}
diff --git a/ydb/library/yql/core/file_storage/ut/test_http_server.h b/ydb/library/yql/core/file_storage/ut/test_http_server.h
index 170b45ca62..00198584c5 100644
--- a/ydb/library/yql/core/file_storage/ut/test_http_server.h
+++ b/ydb/library/yql/core/file_storage/ut/test_http_server.h
@@ -1,77 +1,77 @@
-#pragma once
-
-#include <util/generic/maybe.h>
-#include <util/generic/ptr.h>
-#include <util/generic/string.h>
-
+#pragma once
+
+#include <util/generic/maybe.h>
+#include <util/generic/ptr.h>
+#include <util/generic/string.h>
+
#include <library/cpp/http/misc/httpcodes.h>
#include <library/cpp/threading/future/future.h>
-#include <functional>
-
-namespace NYql {
-
-class TTestHttpServer {
-public:
- struct TReply {
- int Code = 0;
- TString ETag;
- TString LastModified;
- TString Content;
- TMaybe<int> ContentLength;
-
- static TReply Ok(const TString& content, TMaybe<int> contentLength = {}) {
- TReply r;
- r.Code = HTTP_OK;
- r.Content = content;
- r.ContentLength = contentLength;
- return r;
- }
-
- static TReply OkETag(const TString& content, const TString& etag, TMaybe<int> contentLength = {}) {
- TReply r = Ok(content, contentLength);
- r.ETag = etag;
- return r;
- }
-
- static TReply OkLastModified(const TString& content, const TString& lastModified, TMaybe<int> contentLength = {}) {
- TReply r = Ok(content, contentLength);
- r.LastModified = lastModified;
- return r;
- }
-
- static TReply NotModified(const TString& etag = {}, const TString& lastModified = {}) {
- TReply r;
- r.Code = HTTP_NOT_MODIFIED;
- r.ETag = etag;
- r.LastModified = lastModified;
- return r;
- }
-
- static TReply Forbidden() {
- TReply r;
- r.Code = HTTP_FORBIDDEN;
- return r;
- }
- };
-
- struct TRequest {
- TString OAuthToken;
- TString IfNoneMatch;
- TString IfModifiedSince;
- };
-
- typedef std::function<TReply(const TRequest& request)> TRequestHandler;
-
-public:
- explicit TTestHttpServer(int port);
- ~TTestHttpServer();
- void Start();
- TString GetUrl() const;
- void SetRequestHandler(TRequestHandler handler);
-
-private:
- class TImpl;
- THolder<TImpl> Impl_;
-};
-
-}
+#include <functional>
+
+namespace NYql {
+
+class TTestHttpServer {
+public:
+ struct TReply {
+ int Code = 0;
+ TString ETag;
+ TString LastModified;
+ TString Content;
+ TMaybe<int> ContentLength;
+
+ static TReply Ok(const TString& content, TMaybe<int> contentLength = {}) {
+ TReply r;
+ r.Code = HTTP_OK;
+ r.Content = content;
+ r.ContentLength = contentLength;
+ return r;
+ }
+
+ static TReply OkETag(const TString& content, const TString& etag, TMaybe<int> contentLength = {}) {
+ TReply r = Ok(content, contentLength);
+ r.ETag = etag;
+ return r;
+ }
+
+ static TReply OkLastModified(const TString& content, const TString& lastModified, TMaybe<int> contentLength = {}) {
+ TReply r = Ok(content, contentLength);
+ r.LastModified = lastModified;
+ return r;
+ }
+
+ static TReply NotModified(const TString& etag = {}, const TString& lastModified = {}) {
+ TReply r;
+ r.Code = HTTP_NOT_MODIFIED;
+ r.ETag = etag;
+ r.LastModified = lastModified;
+ return r;
+ }
+
+ static TReply Forbidden() {
+ TReply r;
+ r.Code = HTTP_FORBIDDEN;
+ return r;
+ }
+ };
+
+ struct TRequest {
+ TString OAuthToken;
+ TString IfNoneMatch;
+ TString IfModifiedSince;
+ };
+
+ typedef std::function<TReply(const TRequest& request)> TRequestHandler;
+
+public:
+ explicit TTestHttpServer(int port);
+ ~TTestHttpServer();
+ void Start();
+ TString GetUrl() const;
+ void SetRequestHandler(TRequestHandler handler);
+
+private:
+ class TImpl;
+ THolder<TImpl> Impl_;
+};
+
+}
diff --git a/ydb/library/yql/core/file_storage/ut/ya.make b/ydb/library/yql/core/file_storage/ut/ya.make
index c19f58203b..831ea0f36f 100644
--- a/ydb/library/yql/core/file_storage/ut/ya.make
+++ b/ydb/library/yql/core/file_storage/ut/ya.make
@@ -10,11 +10,11 @@ ENDIF()
SRCS(
- file_storage_ut.cpp
+ file_storage_ut.cpp
sized_cache_ut.cpp
storage_ut.cpp
- test_http_server.cpp
- url_mapper_ut.cpp
+ test_http_server.cpp
+ url_mapper_ut.cpp
)
PEERDIR(
diff --git a/ydb/library/yql/core/file_storage/ya.make b/ydb/library/yql/core/file_storage/ya.make
index f25592bfb7..2f204cce32 100644
--- a/ydb/library/yql/core/file_storage/ya.make
+++ b/ydb/library/yql/core/file_storage/ya.make
@@ -3,18 +3,18 @@ LIBRARY()
OWNER(g:yql)
SRCS(
- download_stream.cpp
- download_stream.h
+ download_stream.cpp
+ download_stream.h
file_storage.cpp
- file_storage.h
+ file_storage.h
sized_cache.cpp
- sized_cache.h
- storage.cpp
- storage.h
- url_mapper.cpp
- url_mapper.h
- url_meta.cpp
- url_meta.h
+ sized_cache.h
+ storage.cpp
+ storage.h
+ url_mapper.cpp
+ url_mapper.h
+ url_meta.cpp
+ url_meta.h
)
PEERDIR(
diff --git a/ydb/library/yql/core/issue/protos/issue_id.proto b/ydb/library/yql/core/issue/protos/issue_id.proto
index a2ed91d640..434f094af5 100644
--- a/ydb/library/yql/core/issue/protos/issue_id.proto
+++ b/ydb/library/yql/core/issue/protos/issue_id.proto
@@ -84,12 +84,12 @@ message TIssuesIds {
// yt
YT_TABLE_PATH_RECORD_FOR_TMP = 3001;
YT_INFER_SCHEMA = 3002;
- YT_ACCESS_DENIED = 3003;
- YT_TABLE_NOT_FOUND = 3004;
+ YT_ACCESS_DENIED = 3003;
+ YT_TABLE_NOT_FOUND = 3004;
YT_NATIVE_PRAGMA = 3005;
- YT_VIEW_NOT_FOUND = 3006;
- YT_SCHEMELESS_TABLE = 3007;
- YT_ENTRY_NOT_TABLE_OR_VIEW = 3008;
+ YT_VIEW_NOT_FOUND = 3006;
+ YT_SCHEMELESS_TABLE = 3007;
+ YT_ENTRY_NOT_TABLE_OR_VIEW = 3008;
YT_CONCURRENT_TABLE_MODIF = 3009;
YT_LATE_TABLE_XLOCK = 3010;
YT_SORT_ORDER_CHANGE = 3011;
diff --git a/ydb/library/yql/core/issue/yql_issue.txt b/ydb/library/yql/core/issue/yql_issue.txt
index 897d5d6f9a..9c1c915cd2 100644
--- a/ydb/library/yql/core/issue/yql_issue.txt
+++ b/ydb/library/yql/core/issue/yql_issue.txt
@@ -324,7 +324,7 @@ ids {
code: YQL_MISSING_IS_BEFORE_NOT_NULL
severity: S_WARNING
}
-ids {
+ids {
code: YQL_DEPRECATED_TINY_INT_LITERAL_SUFFIX
severity: S_WARNING
}
@@ -365,17 +365,17 @@ ids {
severity: S_WARNING
}
ids {
- code: YT_VIEW_NOT_FOUND
- severity: S_ERROR
-}
-ids {
- code: YT_SCHEMELESS_TABLE
- severity: S_ERROR
-}
-ids {
- code: YT_ENTRY_NOT_TABLE_OR_VIEW
- severity: S_ERROR
-}
+ code: YT_VIEW_NOT_FOUND
+ severity: S_ERROR
+}
+ids {
+ code: YT_SCHEMELESS_TABLE
+ severity: S_ERROR
+}
+ids {
+ code: YT_ENTRY_NOT_TABLE_OR_VIEW
+ severity: S_ERROR
+}
ids {
code: YT_CONCURRENT_TABLE_MODIF
severity: S_ERROR
diff --git a/ydb/library/yql/core/services/mounts/yql_mounts.cpp b/ydb/library/yql/core/services/mounts/yql_mounts.cpp
index 7d0e221799..6928878ea1 100644
--- a/ydb/library/yql/core/services/mounts/yql_mounts.cpp
+++ b/ydb/library/yql/core/services/mounts/yql_mounts.cpp
@@ -99,15 +99,15 @@ namespace NYql {
}
- TUserDataTable GetYqlDefaultMounts() {
- TUserDataTable userData;
- AddLibraryFromResource(userData, "/lib/yql/aggregate.yql");
- AddLibraryFromResource(userData, "/lib/yql/window.yql");
- AddLibraryFromResource(userData, "/lib/yql/id.yql");
- AddLibraryFromResource(userData, "/lib/yql/sqr.yql");
- AddLibraryFromResource(userData, "/lib/yql/core.yql");
-
- return userData;
+ TUserDataTable GetYqlDefaultMounts() {
+ TUserDataTable userData;
+ AddLibraryFromResource(userData, "/lib/yql/aggregate.yql");
+ AddLibraryFromResource(userData, "/lib/yql/window.yql");
+ AddLibraryFromResource(userData, "/lib/yql/id.yql");
+ AddLibraryFromResource(userData, "/lib/yql/sqr.yql");
+ AddLibraryFromResource(userData, "/lib/yql/core.yql");
+
+ return userData;
}
TUserDataTable GetYqlModuleResolverImpl(
@@ -121,11 +121,11 @@ namespace NYql {
{
auto ctx = rawCtx ? rawCtx : ownedCtx.Get();
Y_ENSURE(ctx);
- TUserDataTable mounts = GetYqlDefaultMounts();
+ TUserDataTable mounts = GetYqlDefaultMounts();
TModulesTable modulesTable;
if (!CompileLibraries(mounts, *ctx, modulesTable, optimizeLibraries)) {
- return {};
+ return {};
}
for (const auto& item : userData) {
diff --git a/ydb/library/yql/core/services/mounts/yql_mounts.h b/ydb/library/yql/core/services/mounts/yql_mounts.h
index 27b30c4ccd..ef7e720eea 100644
--- a/ydb/library/yql/core/services/mounts/yql_mounts.h
+++ b/ydb/library/yql/core/services/mounts/yql_mounts.h
@@ -5,7 +5,7 @@
namespace NYql {
-TUserDataTable GetYqlDefaultMounts();
+TUserDataTable GetYqlDefaultMounts();
bool GetYqlDefaultModuleResolver(
TExprContext& ctx,
@@ -18,7 +18,7 @@ bool GetYqlDefaultModuleResolverWithContext(
const THashMap<TString, TString>& clusterMapping = {},
bool optimizeLibraries = true);
-TUserDataTable GetYqlModuleResolver(
+TUserDataTable GetYqlModuleResolver(
TExprContext& ctx,
IModuleResolver::TPtr& moduleResolver,
const TVector<NUserData::TUserData>& userData,
diff --git a/ydb/library/yql/core/services/yql_eval_expr.cpp b/ydb/library/yql/core/services/yql_eval_expr.cpp
index 811f22a605..7d0f7efa13 100644
--- a/ydb/library/yql/core/services/yql_eval_expr.cpp
+++ b/ydb/library/yql/core/services/yql_eval_expr.cpp
@@ -1033,7 +1033,7 @@ IGraphTransformer::TStatus EvaluateExpression(const TExprNode::TPtr& input, TExp
TMemoryUsageInfo memInfo("Eval");
THolderFactory holderFactory(alloc.Ref(), memInfo);
- auto value = NCommon::ParseYsonNodeInResultFormat(holderFactory, dataNode, mkqlType, &err);
+ auto value = NCommon::ParseYsonNodeInResultFormat(holderFactory, dataNode, mkqlType, &err);
if (!value) {
ctx.AddError(TIssue(ctx.GetPosition(node->Pos()), TStringBuilder() << "Failed to parse data: " << err.Str()));
return nullptr;
diff --git a/ydb/library/yql/core/services/yql_eval_params.cpp b/ydb/library/yql/core/services/yql_eval_params.cpp
index dce9df4892..8ec8fbbb18 100644
--- a/ydb/library/yql/core/services/yql_eval_params.cpp
+++ b/ydb/library/yql/core/services/yql_eval_params.cpp
@@ -12,64 +12,64 @@ namespace NYql {
using namespace NKikimr;
using namespace NKikimr::NMiniKQL;
-namespace {
-
-bool BuildParameterValuesAsNodes(const THashMap<TStringBuf, const TTypeAnnotationNode*>& paramTypes,
- const NYT::TNode& paramData, TExprContext& ctx, const IFunctionRegistry& functionRegistry,
- THashMap<TStringBuf, TExprNode::TPtr>& paramValues) {
-
- if (!paramData.IsMap()) {
- ctx.AddError(TIssue({}, TStringBuilder() << "ParamData is not a map"));
- return false;
- }
-
- TScopedAlloc alloc;
- TTypeEnvironment env(alloc);
- TMemoryUsageInfo memInfo("Parameters");
- THolderFactory holderFactory(alloc.Ref(), memInfo);
- bool isOk = true;
- auto& paramDataMap = paramData.AsMap();
- for (auto& p : paramTypes) {
- auto name = p.first;
-
- TStringStream err;
- TProgramBuilder pgmBuilder(env, functionRegistry);
- TType* mkqlType = NCommon::BuildType(*p.second, pgmBuilder, err);
- if (!mkqlType) {
- ctx.AddError(TIssue({}, TStringBuilder() << "Failed to process type for parameter: " << name << ", reason: " << err.Str()));
- isOk = false;
- continue;
- }
-
- const auto parameterItem = paramDataMap.FindPtr(name);
- if (parameterItem && (!parameterItem->IsMap() || !parameterItem->HasKey("Data"))) {
- ctx.AddError(TIssue({}, TStringBuilder() << "Parameter '" << name << "' value should be a map with key 'Data'"));
- isOk = false;
- continue;
- }
-
+namespace {
+
+bool BuildParameterValuesAsNodes(const THashMap<TStringBuf, const TTypeAnnotationNode*>& paramTypes,
+ const NYT::TNode& paramData, TExprContext& ctx, const IFunctionRegistry& functionRegistry,
+ THashMap<TStringBuf, TExprNode::TPtr>& paramValues) {
+
+ if (!paramData.IsMap()) {
+ ctx.AddError(TIssue({}, TStringBuilder() << "ParamData is not a map"));
+ return false;
+ }
+
+ TScopedAlloc alloc;
+ TTypeEnvironment env(alloc);
+ TMemoryUsageInfo memInfo("Parameters");
+ THolderFactory holderFactory(alloc.Ref(), memInfo);
+ bool isOk = true;
+ auto& paramDataMap = paramData.AsMap();
+ for (auto& p : paramTypes) {
+ auto name = p.first;
+
+ TStringStream err;
+ TProgramBuilder pgmBuilder(env, functionRegistry);
+ TType* mkqlType = NCommon::BuildType(*p.second, pgmBuilder, err);
+ if (!mkqlType) {
+ ctx.AddError(TIssue({}, TStringBuilder() << "Failed to process type for parameter: " << name << ", reason: " << err.Str()));
+ isOk = false;
+ continue;
+ }
+
+ const auto parameterItem = paramDataMap.FindPtr(name);
+ if (parameterItem && (!parameterItem->IsMap() || !parameterItem->HasKey("Data"))) {
+ ctx.AddError(TIssue({}, TStringBuilder() << "Parameter '" << name << "' value should be a map with key 'Data'"));
+ isOk = false;
+ continue;
+ }
+
if (!parameterItem && p.second->GetKind() != ETypeAnnotationKind::Optional && p.second->GetKind() != ETypeAnnotationKind::Null) {
- ctx.AddError(TIssue({}, TStringBuilder() << "Missing value for parameter: " << name));
- isOk = false;
- continue;
- }
-
- auto value = parameterItem ? NCommon::ParseYsonNodeInResultFormat(holderFactory, (*parameterItem)["Data"], mkqlType, &err) : MakeMaybe(NUdf::TUnboxedValue());
- if (!value) {
- ctx.AddError(TIssue({}, TStringBuilder() << "Failed to parse data for parameter: " << name << ", reason: " << err.Str()));
- isOk = false;
- continue;
- }
-
+ ctx.AddError(TIssue({}, TStringBuilder() << "Missing value for parameter: " << name));
+ isOk = false;
+ continue;
+ }
+
+ auto value = parameterItem ? NCommon::ParseYsonNodeInResultFormat(holderFactory, (*parameterItem)["Data"], mkqlType, &err) : MakeMaybe(NUdf::TUnboxedValue());
+ if (!value) {
+ ctx.AddError(TIssue({}, TStringBuilder() << "Failed to parse data for parameter: " << name << ", reason: " << err.Str()));
+ isOk = false;
+ continue;
+ }
+
paramValues[name] = NCommon::ValueToExprLiteral(p.second, *value, ctx);
}
- return isOk;
-}
-
-bool ExtractParameterTypes(const TExprNode::TPtr& input, TTypeAnnotationContext& types,
- TExprContext& ctx, THashMap<TStringBuf, const TTypeAnnotationNode*>& paramTypes) {
-
+ return isOk;
+}
+
+bool ExtractParameterTypes(const TExprNode::TPtr& input, TTypeAnnotationContext& types,
+ TExprContext& ctx, THashMap<TStringBuf, const TTypeAnnotationNode*>& paramTypes) {
+
auto callableTransformer = CreateExtCallableTypeAnnotationTransformer(types);
auto typeTransformer = CreateTypeAnnotationTransformer(callableTransformer, types);
TVector<TTransformStage> transformers;
@@ -79,14 +79,14 @@ bool ExtractParameterTypes(const TExprNode::TPtr& input, TTypeAnnotationContext&
TOptimizeExprSettings settings(nullptr);
settings.VisitChanges = true;
- TExprNode::TPtr output = input;
- auto status1 = OptimizeExpr(input, output, [&](const TExprNode::TPtr& node, TExprContext& ctx)->TExprNode::TPtr {
+ TExprNode::TPtr output = input;
+ auto status1 = OptimizeExpr(input, output, [&](const TExprNode::TPtr& node, TExprContext& ctx)->TExprNode::TPtr {
if (!node->IsCallable("Parameter")) {
return node;
}
auto param = node;
- fullTransformer->Rewind();
+ fullTransformer->Rewind();
auto status = InstantTransform(*fullTransformer, param, ctx);
if (status.Level == IGraphTransformer::TStatus::Error) {
return nullptr;
@@ -110,59 +110,59 @@ bool ExtractParameterTypes(const TExprNode::TPtr& input, TTypeAnnotationContext&
return param;
}, ctx, settings);
- return status1.Level == IGraphTransformer::TStatus::Ok;
-}
-
-}
+ return status1.Level == IGraphTransformer::TStatus::Ok;
+}
-bool ExtractParametersMetaAsYson(const TExprNode::TPtr& input, TTypeAnnotationContext& types,
- TExprContext& ctx, NYT::TNode& paramsMetaMap) {
+}
- THashMap<TStringBuf, const TTypeAnnotationNode*> params;
- if (!ExtractParameterTypes(input, types, ctx, params)) {
- return false;
- }
+bool ExtractParametersMetaAsYson(const TExprNode::TPtr& input, TTypeAnnotationContext& types,
+ TExprContext& ctx, NYT::TNode& paramsMetaMap) {
- for (auto& p : params) {
- paramsMetaMap[p.first] = NCommon::TypeToYsonNode(p.second);
- }
- return true;
-}
+ THashMap<TStringBuf, const TTypeAnnotationNode*> params;
+ if (!ExtractParameterTypes(input, types, ctx, params)) {
+ return false;
+ }
-IGraphTransformer::TStatus EvaluateParameters(const TExprNode::TPtr& input, TExprNode::TPtr& output,
- TTypeAnnotationContext& types, TExprContext& ctx, const IFunctionRegistry& functionRegistry) {
- output = input;
+ for (auto& p : params) {
+ paramsMetaMap[p.first] = NCommon::TypeToYsonNode(p.second);
+ }
+ return true;
+}
- THashMap<TStringBuf, const TTypeAnnotationNode*> paramTypes;
- if (!ExtractParameterTypes(input, types, ctx, paramTypes)) {
- return IGraphTransformer::TStatus::Error;
- }
+IGraphTransformer::TStatus EvaluateParameters(const TExprNode::TPtr& input, TExprNode::TPtr& output,
+ TTypeAnnotationContext& types, TExprContext& ctx, const IFunctionRegistry& functionRegistry) {
+ output = input;
- if (!paramTypes) {
- // no params - just exit
- return IGraphTransformer::TStatus::Ok;
+ THashMap<TStringBuf, const TTypeAnnotationNode*> paramTypes;
+ if (!ExtractParameterTypes(input, types, ctx, paramTypes)) {
+ return IGraphTransformer::TStatus::Error;
}
- const auto emptyMapNode = NYT::TNode::CreateMap();
- const auto& paramData = types.OperationOptions.ParametersYson.GetOrElse(emptyMapNode);
- THashMap<TStringBuf, TExprNode::TPtr> paramValues;
- if (!BuildParameterValuesAsNodes(paramTypes, paramData, ctx, functionRegistry, paramValues)) {
- return IGraphTransformer::TStatus::Error;
+ if (!paramTypes) {
+ // no params - just exit
+ return IGraphTransformer::TStatus::Ok;
+ }
+
+ const auto emptyMapNode = NYT::TNode::CreateMap();
+ const auto& paramData = types.OperationOptions.ParametersYson.GetOrElse(emptyMapNode);
+ THashMap<TStringBuf, TExprNode::TPtr> paramValues;
+ if (!BuildParameterValuesAsNodes(paramTypes, paramData, ctx, functionRegistry, paramValues)) {
+ return IGraphTransformer::TStatus::Error;
}
- // inject param values into graph
- TOptimizeExprSettings settings(nullptr);
- settings.VisitChanges = true;
- auto status = OptimizeExpr(output, output, [&](const TExprNode::TPtr& node, TExprContext& ctx)->TExprNode::TPtr {
+ // inject param values into graph
+ TOptimizeExprSettings settings(nullptr);
+ settings.VisitChanges = true;
+ auto status = OptimizeExpr(output, output, [&](const TExprNode::TPtr& node, TExprContext& ctx)->TExprNode::TPtr {
Y_UNUSED(ctx);
if (!node->IsCallable("Parameter")) {
return node;
}
auto name = node->Child(0)->Content();
- auto evaluated = paramValues.FindPtr(name);
+ auto evaluated = paramValues.FindPtr(name);
YQL_ENSURE(evaluated, "Missing parameter value: " << name);
- return *evaluated;
+ return *evaluated;
}, ctx, settings);
if (status.Level == IGraphTransformer::TStatus::Error) {
diff --git a/ydb/library/yql/core/services/yql_eval_params.h b/ydb/library/yql/core/services/yql_eval_params.h
index 681f61d2c0..6ec2723a2f 100644
--- a/ydb/library/yql/core/services/yql_eval_params.h
+++ b/ydb/library/yql/core/services/yql_eval_params.h
@@ -18,6 +18,6 @@ namespace NYql {
IGraphTransformer::TStatus EvaluateParameters(const TExprNode::TPtr& input, TExprNode::TPtr& output, TTypeAnnotationContext& types, TExprContext& ctx,
const NKikimr::NMiniKQL::IFunctionRegistry& functionRegistry);
-bool ExtractParametersMetaAsYson(const TExprNode::TPtr& input, TTypeAnnotationContext& types, TExprContext& ctx, NYT::TNode& paramsMetaMap);
-
+bool ExtractParametersMetaAsYson(const TExprNode::TPtr& input, TTypeAnnotationContext& types, TExprContext& ctx, NYT::TNode& paramsMetaMap);
+
}
diff --git a/ydb/library/yql/core/services/yql_plan.cpp b/ydb/library/yql/core/services/yql_plan.cpp
index 4d7cfffaf5..adb949c2e2 100644
--- a/ydb/library/yql/core/services/yql_plan.cpp
+++ b/ydb/library/yql/core/services/yql_plan.cpp
@@ -66,7 +66,7 @@ struct TPinKey {
}
struct THash {
- size_t operator()(const TPinKey& x) const {
+ size_t operator()(const TPinKey& x) const {
return x.Hash();
}
};
diff --git a/ydb/library/yql/core/type_ann/type_ann_core.cpp b/ydb/library/yql/core/type_ann/type_ann_core.cpp
index 5846e6cb10..19fd543347 100644
--- a/ydb/library/yql/core/type_ann/type_ann_core.cpp
+++ b/ydb/library/yql/core/type_ann/type_ann_core.cpp
@@ -428,35 +428,35 @@ namespace NTypeAnnImpl {
: TContext(expr)
, Types(types) {}
- bool TExtContext::LoadUdfMetadata(const TVector<IUdfResolver::TFunction*>& functions) {
- TVector<IUdfResolver::TImport*> imports;
- imports.reserve(Types.UdfImports.size());
- for (auto& x : Types.UdfImports) {
- imports.push_back(&x.second);
- }
-
- if (!Types.UdfResolver->LoadMetadata(imports, functions, Expr)) {
- return false;
- }
-
- for (auto& import : imports) {
- RegisterResolvedImport(*import);
- }
-
- return true;
- }
-
- void TExtContext::RegisterResolvedImport(const IUdfResolver::TImport& import) {
- YQL_ENSURE(import.Modules);
- for (auto& m : *import.Modules) {
- auto p = Types.UdfModules.emplace(m, import.FileAlias);
- // rework this place when user tries to override another module
- if (!p.second && p.first->second != import.FileAlias) {
- ythrow yexception() << "Module name duplicated : module = " << m << ", existing alias = " << p.first->second << ", new alis = " << import.FileAlias;
- }
- }
- }
-
+ bool TExtContext::LoadUdfMetadata(const TVector<IUdfResolver::TFunction*>& functions) {
+ TVector<IUdfResolver::TImport*> imports;
+ imports.reserve(Types.UdfImports.size());
+ for (auto& x : Types.UdfImports) {
+ imports.push_back(&x.second);
+ }
+
+ if (!Types.UdfResolver->LoadMetadata(imports, functions, Expr)) {
+ return false;
+ }
+
+ for (auto& import : imports) {
+ RegisterResolvedImport(*import);
+ }
+
+ return true;
+ }
+
+ void TExtContext::RegisterResolvedImport(const IUdfResolver::TImport& import) {
+ YQL_ENSURE(import.Modules);
+ for (auto& m : *import.Modules) {
+ auto p = Types.UdfModules.emplace(m, import.FileAlias);
+ // rework this place when user tries to override another module
+ if (!p.second && p.first->second != import.FileAlias) {
+ ythrow yexception() << "Module name duplicated : module = " << m << ", existing alias = " << p.first->second << ", new alis = " << import.FileAlias;
+ }
+ }
+ }
+
bool EnsureJsonQueryFunction(const NNodes::TCoJsonQueryBase& function, TContext& ctx) {
// first argument must be "Json", "Json?", "JsonDocument" or "JsonDocument?" type
const auto& jsonArg = function.Json().Ref();
@@ -6579,31 +6579,31 @@ template <NKikimr::NUdf::EDataSlot DataSlot>
return IGraphTransformer::TStatus::Ok;
}
- bool ValidateFileAlias(const TExprNode& aliasNode, TExtContext& ctx) {
+ bool ValidateFileAlias(const TExprNode& aliasNode, TExtContext& ctx) {
if (!EnsureAtom(aliasNode, ctx.Expr)) {
- return false;
+ return false;
}
const auto content = aliasNode.Content();
- if (!ctx.Types.UserDataStorage->ContainsUserDataBlock(content)) {
+ if (!ctx.Types.UserDataStorage->ContainsUserDataBlock(content)) {
ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(aliasNode.Pos()), TStringBuilder() << "File not found: " << content));
- return false;
+ return false;
}
- return true;
+ return true;
}
- bool ValidateFolderAlias(const TExprNode& aliasNode, TExtContext& ctx) {
+ bool ValidateFolderAlias(const TExprNode& aliasNode, TExtContext& ctx) {
if (!EnsureAtom(aliasNode, ctx.Expr)) {
- return false;
+ return false;
}
const auto content = aliasNode.Content();
- if (!ctx.Types.UserDataStorage->ContainsUserDataFolder(content)) {
+ if (!ctx.Types.UserDataStorage->ContainsUserDataFolder(content)) {
ctx.Expr.AddError(TIssue(ctx.Expr.GetPosition(aliasNode.Pos()), TStringBuilder() << "Folder not found: " << content));
- return false;
+ return false;
}
- return true;
+ return true;
}
IGraphTransformer::TStatus FilePathWrapper(const TExprNode::TPtr& input, TExprNode::TPtr& output, TExtContext& ctx) {
@@ -7041,11 +7041,11 @@ template <NKikimr::NUdf::EDataSlot DataSlot>
auto type = input->Head().GetTypeAnn()->Cast<TCallableExprType>();
auto autoMapFunction = type->GetReturnType()->GetKind() == ETypeAnnotationKind::Optional ? "FlatMap" : "Map";
auto tmpArg = ctx.Expr.NewArgument(input->Pos(), "tmp");
- if (!EnsureCallableMaxArgsCount(input->Pos(), input->ChildrenSize() - 1, type->GetArgumentsSize(), ctx.Expr)) {
+ if (!EnsureCallableMaxArgsCount(input->Pos(), input->ChildrenSize() - 1, type->GetArgumentsSize(), ctx.Expr)) {
return IGraphTransformer::TStatus::Error;
}
- if (!EnsureCallableMinArgsCount(input->Pos(), input->ChildrenSize() - 1, type->GetArgumentsSize() - type->GetOptionalArgumentsCount(), ctx.Expr)) {
+ if (!EnsureCallableMinArgsCount(input->Pos(), input->ChildrenSize() - 1, type->GetArgumentsSize() - type->GetOptionalArgumentsCount(), ctx.Expr)) {
return IGraphTransformer::TStatus::Error;
}
diff --git a/ydb/library/yql/core/type_ann/type_ann_impl.h b/ydb/library/yql/core/type_ann/type_ann_impl.h
index 3d940ebd73..98cb57dce2 100644
--- a/ydb/library/yql/core/type_ann/type_ann_impl.h
+++ b/ydb/library/yql/core/type_ann/type_ann_impl.h
@@ -20,8 +20,8 @@ namespace NTypeAnnImpl {
TTypeAnnotationContext& Types;
TExtContext(TExprContext& expr, TTypeAnnotationContext& types);
- bool LoadUdfMetadata(const TVector<IUdfResolver::TFunction*>& functions);
- void RegisterResolvedImport(const IUdfResolver::TImport& import);
+ bool LoadUdfMetadata(const TVector<IUdfResolver::TFunction*>& functions);
+ void RegisterResolvedImport(const IUdfResolver::TImport& import);
};
// Implemented in type_ann_join.cpp
diff --git a/ydb/library/yql/core/ya.make b/ydb/library/yql/core/ya.make
index 29169996f5..237a563948 100644
--- a/ydb/library/yql/core/ya.make
+++ b/ydb/library/yql/core/ya.make
@@ -27,8 +27,8 @@ SRCS(
yql_gc_transformer.h
yql_graph_transformer.cpp
yql_graph_transformer.h
- yql_holding_file_storage.cpp
- yql_holding_file_storage.h
+ yql_holding_file_storage.cpp
+ yql_holding_file_storage.h
yql_join.cpp
yql_join.h
yql_library_compiler.cpp
@@ -47,16 +47,16 @@ SRCS(
yql_type_annotation.h
yql_type_helpers.cpp
yql_type_helpers.h
- yql_udf_index.cpp
- yql_udf_index.h
- yql_udf_index_package_set.cpp
- yql_udf_index_package_set.h
- yql_udf_resolver.cpp
- yql_udf_resolver.h
- yql_user_data.cpp
- yql_user_data.h
- yql_user_data_storage.cpp
- yql_user_data_storage.h
+ yql_udf_index.cpp
+ yql_udf_index.h
+ yql_udf_index_package_set.cpp
+ yql_udf_index_package_set.h
+ yql_udf_resolver.cpp
+ yql_udf_resolver.h
+ yql_user_data.cpp
+ yql_user_data.h
+ yql_user_data_storage.cpp
+ yql_user_data_storage.h
)
PEERDIR(
@@ -82,7 +82,7 @@ PEERDIR(
GENERATE_ENUM_SERIALIZATION(yql_data_provider.h)
-GENERATE_ENUM_SERIALIZATION(yql_user_data.h)
+GENERATE_ENUM_SERIALIZATION(yql_user_data.h)
GENERATE_ENUM_SERIALIZATION(yql_atom_enums.h)
diff --git a/ydb/library/yql/core/yql_data_provider.h b/ydb/library/yql/core/yql_data_provider.h
index 3ffbdc041d..69d9d49c68 100644
--- a/ydb/library/yql/core/yql_data_provider.h
+++ b/ydb/library/yql/core/yql_data_provider.h
@@ -223,10 +223,10 @@ struct TDataProviderInfo {
std::function<bool()> HasActiveProcesses;
std::function<void(const TString& sessionId)> CloseSession;
-
+
std::function<void(const TString& sessionId)> CleanupSession;
- std::function<TMaybe<TString>(const TString& url)> TokenResolver;
+ std::function<TMaybe<TString>(const TString& url)> TokenResolver;
};
using TDataProviderInitializer = std::function<TDataProviderInfo(
diff --git a/ydb/library/yql/core/yql_expr_type_annotation.cpp b/ydb/library/yql/core/yql_expr_type_annotation.cpp
index f2b793af8d..8f2edb4495 100644
--- a/ydb/library/yql/core/yql_expr_type_annotation.cpp
+++ b/ydb/library/yql/core/yql_expr_type_annotation.cpp
@@ -1824,23 +1824,23 @@ bool EnsureMinMaxArgsCount(const TExprNode& node, ui32 minArgs, ui32 maxArgs, TE
}
bool EnsureCallableMinArgsCount(const TPositionHandle& pos, ui32 args, ui32 expectedArgs, TExprContext& ctx) {
- if (args < expectedArgs) {
+ if (args < expectedArgs) {
ctx.AddError(TIssue(ctx.GetPosition(pos), TStringBuilder() << "Callable expected at least " << expectedArgs << " argument(s), but got " << args));
- return false;
- }
-
- return true;
-}
-
+ return false;
+ }
+
+ return true;
+}
+
bool EnsureCallableMaxArgsCount(const TPositionHandle& pos, ui32 args, ui32 expectedArgs, TExprContext& ctx) {
- if (args > expectedArgs) {
+ if (args > expectedArgs) {
ctx.AddError(TIssue(ctx.GetPosition(pos), TStringBuilder() << "Callable expected at most " << expectedArgs << " argument(s), but got " << args));
- return false;
- }
-
- return true;
-}
-
+ return false;
+ }
+
+ return true;
+}
+
bool EnsureAtom(const TExprNode& node, TExprContext& ctx) {
if (HasError(node.GetTypeAnn(), ctx) || node.Type() != TExprNode::Atom) {
ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() << "Expected atom, but got: " << node.Type()));
@@ -4624,7 +4624,7 @@ TString GetTypeDiff(const TTypeAnnotationNode& left, const TTypeAnnotationNode&
return res;
}
-TExprNode::TPtr ExpandTypeNoCache(TPositionHandle position, const TTypeAnnotationNode& type, TExprContext& ctx) {
+TExprNode::TPtr ExpandTypeNoCache(TPositionHandle position, const TTypeAnnotationNode& type, TExprContext& ctx) {
switch (type.GetKind()) {
case ETypeAnnotationKind::Unit:
return ctx.NewCallable(position, "UnitType", {});
@@ -4805,14 +4805,14 @@ TExprNode::TPtr ExpandTypeNoCache(TPositionHandle position, const TTypeAnnotatio
}
}
-TExprNode::TPtr ExpandType(TPositionHandle position, const TTypeAnnotationNode& type, TExprContext& ctx) {
- TExprNode::TPtr& ret = ctx.TypeAsNodeCache[&type];
- if (!ret) {
- ret = ExpandTypeNoCache(position, type, ctx);
- }
- return ret;
-}
-
+TExprNode::TPtr ExpandType(TPositionHandle position, const TTypeAnnotationNode& type, TExprContext& ctx) {
+ TExprNode::TPtr& ret = ctx.TypeAsNodeCache[&type];
+ if (!ret) {
+ ret = ExpandTypeNoCache(position, type, ctx);
+ }
+ return ret;
+}
+
bool IsSystemMember(const TStringBuf& memberName) {
return memberName.StartsWith(TStringBuf("_yql_"));
}
diff --git a/ydb/library/yql/core/yql_holding_file_storage.cpp b/ydb/library/yql/core/yql_holding_file_storage.cpp
index 865dfc5880..ce6c236744 100644
--- a/ydb/library/yql/core/yql_holding_file_storage.cpp
+++ b/ydb/library/yql/core/yql_holding_file_storage.cpp
@@ -1,113 +1,113 @@
-#include "yql_holding_file_storage.h"
+#include "yql_holding_file_storage.h"
#include <ydb/library/yql/utils/future_action.h>
-
-namespace NYql {
-
-THoldingFileStorage::THoldingFileStorage(TFileStoragePtr fileStorage)
- : FileStorage_(std::move(fileStorage))
-{
- // FileStorage_ can be nullptr
-}
-
-TFileStoragePtr THoldingFileStorage::GetRawStorage() const {
- return FileStorage_;
-}
-
-bool THoldingFileStorage::CanFreeze() const {
- return FileStorage_ != nullptr;
-}
-
-TFileLinkPtr THoldingFileStorage::FreezeFile(const TUserDataBlock& block) {
- if (block.FrozenFile) {
- return block.FrozenFile;
- }
-
- return FindOrPutData(block);
-}
-
-NThreading::TFuture<std::function<TFileLinkPtr()>> THoldingFileStorage::FreezeFileAsync(const TUserDataBlock& block) {
- if (block.FrozenFile) {
- return MakeFutureWithConstantAction(block.FrozenFile);
- }
-
- return FindOrPutDataAsync(block);
-}
-
-TFileLinkPtr THoldingFileStorage::FindOrPutData(const TUserDataBlock& block) {
- auto it = Links_.find(block);
- if (it != Links_.end()) {
- return it->second;
- }
-
- return PutDataAndRegister(block);
-}
-
-TFileLinkPtr THoldingFileStorage::PutDataAndRegister(const TUserDataBlock& block) {
- // download outside of the lock
- TFileLinkPtr link = PutData(block);
- return RegisterLink(block, link);
-}
-
-TFileLinkPtr THoldingFileStorage::RegisterLink(const TUserDataBlock& block, TFileLinkPtr link) {
- // important: do not overwrite existing value if any and return it
- return Links_.emplace(block, link).first->second;
-}
-
-TFileLinkPtr THoldingFileStorage::PutData(const TUserDataBlock& block) {
- if (!FileStorage_) {
- ythrow yexception() << "FileStorage is not available, unable to load " << block.Data;
- }
-
- switch (block.Type) {
- case EUserDataType::PATH:
- return FileStorage_->PutFile(block.Data);
-
- case EUserDataType::URL:
- return FileStorage_->PutUrl(block.Data, block.UrlToken);
-
- case EUserDataType::RAW_INLINE_DATA:
- return FileStorage_->PutInline(block.Data);
-
- default:
- ythrow yexception() << "Unknown user data type " << block.Type;
- }
-}
-
-NThreading::TFuture<std::function<TFileLinkPtr()>> THoldingFileStorage::FindOrPutDataAsync(const TUserDataBlock& block) {
- auto it = Links_.find(block);
- if (it != Links_.end()) {
- return MakeFutureWithConstantAction(it->second);
- }
-
- return PutDataAndRegisterAsync(block);
-}
-
-NThreading::TFuture<std::function<TFileLinkPtr()>> THoldingFileStorage::PutDataAndRegisterAsync(const TUserDataBlock& block) {
- NThreading::TFuture<TFileLinkPtr> future = PutDataAsync(block);
-
- return AddActionToFuture(future, [this, block](TFileLinkPtr link) {
- return this->RegisterLink(block, link);
- });
-}
-
-NThreading::TFuture<TFileLinkPtr> THoldingFileStorage::PutDataAsync(const TUserDataBlock& block) {
- if (!FileStorage_) {
- ythrow yexception() << "FileStorage is not available, unable to load " << block.Data;
- }
-
- switch (block.Type) {
- case EUserDataType::PATH:
- return FileStorage_->PutFileAsync(block.Data);
-
- case EUserDataType::URL:
- return FileStorage_->PutUrlAsync(block.Data, block.UrlToken);
-
- case EUserDataType::RAW_INLINE_DATA:
- return FileStorage_->PutInlineAsync(block.Data);
-
- default:
- ythrow yexception() << "Unknown user data type " << block.Type;
- }
-}
-
-}
+
+namespace NYql {
+
+THoldingFileStorage::THoldingFileStorage(TFileStoragePtr fileStorage)
+ : FileStorage_(std::move(fileStorage))
+{
+ // FileStorage_ can be nullptr
+}
+
+TFileStoragePtr THoldingFileStorage::GetRawStorage() const {
+ return FileStorage_;
+}
+
+bool THoldingFileStorage::CanFreeze() const {
+ return FileStorage_ != nullptr;
+}
+
+TFileLinkPtr THoldingFileStorage::FreezeFile(const TUserDataBlock& block) {
+ if (block.FrozenFile) {
+ return block.FrozenFile;
+ }
+
+ return FindOrPutData(block);
+}
+
+NThreading::TFuture<std::function<TFileLinkPtr()>> THoldingFileStorage::FreezeFileAsync(const TUserDataBlock& block) {
+ if (block.FrozenFile) {
+ return MakeFutureWithConstantAction(block.FrozenFile);
+ }
+
+ return FindOrPutDataAsync(block);
+}
+
+TFileLinkPtr THoldingFileStorage::FindOrPutData(const TUserDataBlock& block) {
+ auto it = Links_.find(block);
+ if (it != Links_.end()) {
+ return it->second;
+ }
+
+ return PutDataAndRegister(block);
+}
+
+TFileLinkPtr THoldingFileStorage::PutDataAndRegister(const TUserDataBlock& block) {
+ // download outside of the lock
+ TFileLinkPtr link = PutData(block);
+ return RegisterLink(block, link);
+}
+
+TFileLinkPtr THoldingFileStorage::RegisterLink(const TUserDataBlock& block, TFileLinkPtr link) {
+ // important: do not overwrite existing value if any and return it
+ return Links_.emplace(block, link).first->second;
+}
+
+TFileLinkPtr THoldingFileStorage::PutData(const TUserDataBlock& block) {
+ if (!FileStorage_) {
+ ythrow yexception() << "FileStorage is not available, unable to load " << block.Data;
+ }
+
+ switch (block.Type) {
+ case EUserDataType::PATH:
+ return FileStorage_->PutFile(block.Data);
+
+ case EUserDataType::URL:
+ return FileStorage_->PutUrl(block.Data, block.UrlToken);
+
+ case EUserDataType::RAW_INLINE_DATA:
+ return FileStorage_->PutInline(block.Data);
+
+ default:
+ ythrow yexception() << "Unknown user data type " << block.Type;
+ }
+}
+
+NThreading::TFuture<std::function<TFileLinkPtr()>> THoldingFileStorage::FindOrPutDataAsync(const TUserDataBlock& block) {
+ auto it = Links_.find(block);
+ if (it != Links_.end()) {
+ return MakeFutureWithConstantAction(it->second);
+ }
+
+ return PutDataAndRegisterAsync(block);
+}
+
+NThreading::TFuture<std::function<TFileLinkPtr()>> THoldingFileStorage::PutDataAndRegisterAsync(const TUserDataBlock& block) {
+ NThreading::TFuture<TFileLinkPtr> future = PutDataAsync(block);
+
+ return AddActionToFuture(future, [this, block](TFileLinkPtr link) {
+ return this->RegisterLink(block, link);
+ });
+}
+
+NThreading::TFuture<TFileLinkPtr> THoldingFileStorage::PutDataAsync(const TUserDataBlock& block) {
+ if (!FileStorage_) {
+ ythrow yexception() << "FileStorage is not available, unable to load " << block.Data;
+ }
+
+ switch (block.Type) {
+ case EUserDataType::PATH:
+ return FileStorage_->PutFileAsync(block.Data);
+
+ case EUserDataType::URL:
+ return FileStorage_->PutUrlAsync(block.Data, block.UrlToken);
+
+ case EUserDataType::RAW_INLINE_DATA:
+ return FileStorage_->PutInlineAsync(block.Data);
+
+ default:
+ ythrow yexception() << "Unknown user data type " << block.Type;
+ }
+}
+
+}
diff --git a/ydb/library/yql/core/yql_holding_file_storage.h b/ydb/library/yql/core/yql_holding_file_storage.h
index 39178a36dc..8c388a51bc 100644
--- a/ydb/library/yql/core/yql_holding_file_storage.h
+++ b/ydb/library/yql/core/yql_holding_file_storage.h
@@ -1,45 +1,45 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/core/yql_user_data.h>
#include <ydb/library/yql/core/file_storage/file_storage.h>
-#include <util/generic/map.h>
-
-namespace NYql {
-
-class THoldingFileStorage {
-private:
- struct TDataLess {
- bool operator()(const TUserDataBlock& b1, const TUserDataBlock& b2) const {
- return std::tie(b1.Type, b1.Data, b1.UrlToken) < std::tie(b2.Type, b2.Data, b2.UrlToken);
- }
- };
-
-public:
- explicit THoldingFileStorage(TFileStoragePtr fileStorage);
- TFileStoragePtr GetRawStorage() const;
- bool CanFreeze() const;
- // it is safe to call this method from multiple threads
- // method will return the same link for single path even in multi-threaded env
- // if we have single url but with different tokens we can potentially download several different versions of url
- TFileLinkPtr FreezeFile(const TUserDataBlock& block);
-
- // downloaded file will be registered in cache after function invocation
- NThreading::TFuture<std::function<TFileLinkPtr()>> FreezeFileAsync(const TUserDataBlock& block);
-
-private:
- TFileLinkPtr PutDataAndRegister(const TUserDataBlock& block);
- TFileLinkPtr PutData(const TUserDataBlock& block);
- TFileLinkPtr FindOrPutData(const TUserDataBlock& block);
-
- NThreading::TFuture<std::function<TFileLinkPtr()>> PutDataAndRegisterAsync(const TUserDataBlock& block);
- NThreading::TFuture<TFileLinkPtr> PutDataAsync(const TUserDataBlock& block);
- NThreading::TFuture<std::function<TFileLinkPtr()>> FindOrPutDataAsync(const TUserDataBlock& block);
-
- TFileLinkPtr RegisterLink(const TUserDataBlock& block, TFileLinkPtr link);
-
-private:
- TFileStoragePtr FileStorage_;
- TMap<TUserDataBlock, TFileLinkPtr, TDataLess> Links_;
-};
-
-}
+#include <util/generic/map.h>
+
+namespace NYql {
+
+class THoldingFileStorage {
+private:
+ struct TDataLess {
+ bool operator()(const TUserDataBlock& b1, const TUserDataBlock& b2) const {
+ return std::tie(b1.Type, b1.Data, b1.UrlToken) < std::tie(b2.Type, b2.Data, b2.UrlToken);
+ }
+ };
+
+public:
+ explicit THoldingFileStorage(TFileStoragePtr fileStorage);
+ TFileStoragePtr GetRawStorage() const;
+ bool CanFreeze() const;
+ // it is safe to call this method from multiple threads
+ // method will return the same link for single path even in multi-threaded env
+ // if we have single url but with different tokens we can potentially download several different versions of url
+ TFileLinkPtr FreezeFile(const TUserDataBlock& block);
+
+ // downloaded file will be registered in cache after function invocation
+ NThreading::TFuture<std::function<TFileLinkPtr()>> FreezeFileAsync(const TUserDataBlock& block);
+
+private:
+ TFileLinkPtr PutDataAndRegister(const TUserDataBlock& block);
+ TFileLinkPtr PutData(const TUserDataBlock& block);
+ TFileLinkPtr FindOrPutData(const TUserDataBlock& block);
+
+ NThreading::TFuture<std::function<TFileLinkPtr()>> PutDataAndRegisterAsync(const TUserDataBlock& block);
+ NThreading::TFuture<TFileLinkPtr> PutDataAsync(const TUserDataBlock& block);
+ NThreading::TFuture<std::function<TFileLinkPtr()>> FindOrPutDataAsync(const TUserDataBlock& block);
+
+ TFileLinkPtr RegisterLink(const TUserDataBlock& block, TFileLinkPtr link);
+
+private:
+ TFileStoragePtr FileStorage_;
+ TMap<TUserDataBlock, TFileLinkPtr, TDataLess> Links_;
+};
+
+}
diff --git a/ydb/library/yql/core/yql_library_compiler.cpp b/ydb/library/yql/core/yql_library_compiler.cpp
index 79296792e6..f0de46292b 100644
--- a/ydb/library/yql/core/yql_library_compiler.cpp
+++ b/ydb/library/yql/core/yql_library_compiler.cpp
@@ -13,25 +13,25 @@ namespace {
bool ReplaceNodes(TExprNode& node, const TNodeOnNodeOwnedMap& replaces, bool& hasChanges, TNodeSet& visited, TNodeSet& parents)
{
if (!node.ChildrenSize()) {
- return true;
- }
+ return true;
+ }
const auto pair = parents.emplace(&node);
- if (!pair.second) {
+ if (!pair.second) {
return false;
- }
-
- if (!visited.emplace(&node).second) {
- parents.erase(pair.first);
- return true;
- }
+ }
+ if (!visited.emplace(&node).second) {
+ parents.erase(pair.first);
+ return true;
+ }
+
for (ui32 i = 0U; i < node.ChildrenSize(); ++i) {
auto& child = node.ChildRef(i);
if (const auto it = replaces.find(node.Child(i)); replaces.cend() != it) {
child = it->second;
hasChanges = true;
- }
+ }
if (!ReplaceNodes(*node.Child(i), replaces, hasChanges, visited, parents)) {
child.Reset();
@@ -112,17 +112,17 @@ bool CompileLibrary(const TString& alias, const TString& script, TExprContext& c
}
bool LinkLibraries(THashMap<TString, TLibraryCohesion>& libs, TExprContext& ctx, TExprContext& ctxToClone, const TModulesTable* loadedModules) {
- std::function<const TExportTable*(const TString&)> f = [loadedModules](const TString& normalizedModuleName) -> const TExportTable* {
- if (!loadedModules) {
- return nullptr;
- }
-
- return loadedModules->FindPtr(normalizedModuleName);
- };
-
- return LinkLibraries(libs, ctx, ctxToClone, f);
-}
-
+ std::function<const TExportTable*(const TString&)> f = [loadedModules](const TString& normalizedModuleName) -> const TExportTable* {
+ if (!loadedModules) {
+ return nullptr;
+ }
+
+ return loadedModules->FindPtr(normalizedModuleName);
+ };
+
+ return LinkLibraries(libs, ctx, ctxToClone, f);
+}
+
bool LinkLibraries(THashMap<TString, TLibraryCohesion>& libs, TExprContext& ctx, TExprContext& ctxToClone, const std::function<const TExportTable*(const TString&)>& module2ExportTable)
{
TNodeOnNodeOwnedMap clones, replaces;
diff --git a/ydb/library/yql/core/yql_library_compiler.h b/ydb/library/yql/core/yql_library_compiler.h
index eb6abb83a5..94162177ca 100644
--- a/ydb/library/yql/core/yql_library_compiler.h
+++ b/ydb/library/yql/core/yql_library_compiler.h
@@ -7,7 +7,7 @@ namespace NYql {
bool OptimizeLibrary(TLibraryCohesion& cohesion, TExprContext& ctx);
bool CompileLibrary(const TString& alias, const TString& script, TExprContext& ctx, TLibraryCohesion& cohesion, bool optimize = true);
-
+
bool LinkLibraries(THashMap<TString, TLibraryCohesion>& libs, TExprContext& ctx, TExprContext& ctxToClone, const std::function<const TExportTable*(const TString&)>& module2ExportTable);
bool LinkLibraries(THashMap<TString, TLibraryCohesion>& libs, TExprContext& ctx, TExprContext& ctxToClone, const TModulesTable* loadedModules = nullptr);
diff --git a/ydb/library/yql/core/yql_type_annotation.cpp b/ydb/library/yql/core/yql_type_annotation.cpp
index 9f50af3b63..d04d6dadb1 100644
--- a/ydb/library/yql/core/yql_type_annotation.cpp
+++ b/ydb/library/yql/core/yql_type_annotation.cpp
@@ -12,19 +12,19 @@
#include <util/stream/file.h>
#include <util/string/join.h>
-namespace NYql {
+namespace NYql {
using namespace NKikimr;
-bool TTypeAnnotationContext::Initialize(TExprContext& ctx) {
- if (!InitializeResult) {
- InitializeResult = DoInitialize(ctx);
+bool TTypeAnnotationContext::Initialize(TExprContext& ctx) {
+ if (!InitializeResult) {
+ InitializeResult = DoInitialize(ctx);
}
-
+
return *InitializeResult;
}
-bool TTypeAnnotationContext::DoInitialize(TExprContext& ctx) {
+bool TTypeAnnotationContext::DoInitialize(TExprContext& ctx) {
for (auto& x : DataSources) {
if (!x->Initialize(ctx)) {
return false;
@@ -37,9 +37,9 @@ bool TTypeAnnotationContext::DoInitialize(TExprContext& ctx) {
}
}
- Y_ENSURE(UserDataStorage);
- UserDataStorage->FillUserDataTokens();
-
+ Y_ENSURE(UserDataStorage);
+ UserDataStorage->FillUserDataTokens();
+
// Disable "in progress" constraints
//DisableConstraintCheck.emplace(TSortedConstraintNode::Name());
//DisableConstraintCheck.emplace(TEmptyConstraintNode::Name());
@@ -147,18 +147,18 @@ const TCredential* TTypeAnnotationContext::FindCredential(const TStringBuf& name
return nullptr;
}
-TString TTypeAnnotationContext::FindCredentialContent(const TStringBuf& name1, const TStringBuf& name2, const TString& defaultContent) const {
- if (auto cred = FindCredential(name1)) {
- return cred->Content;
- }
-
- if (auto cred = FindCredential(name2)) {
- return cred->Content;
- }
-
- return defaultContent;
-}
-
+TString TTypeAnnotationContext::FindCredentialContent(const TStringBuf& name1, const TStringBuf& name2, const TString& defaultContent) const {
+ if (auto cred = FindCredential(name1)) {
+ return cred->Content;
+ }
+
+ if (auto cred = FindCredential(name2)) {
+ return cred->Content;
+ }
+
+ return defaultContent;
+}
+
TString TTypeAnnotationContext::GetDefaultDataSource() const {
if (!PureResultDataSource.empty()) {
YQL_ENSURE(Find(AvailablePureResultDataSources.begin(),
@@ -167,7 +167,7 @@ TString TTypeAnnotationContext::GetDefaultDataSource() const {
return PureResultDataSource;
}
- Y_ENSURE(!AvailablePureResultDataSources.empty());
+ Y_ENSURE(!AvailablePureResultDataSources.empty());
return AvailablePureResultDataSources.front();
}
@@ -185,28 +185,28 @@ TString TModuleResolver::NormalizeModuleName(const TString& path) {
return path;
}
-void TModuleResolver::RegisterPackage(const TString& package) {
- KnownPackages.insert(package);
-}
-
-bool TModuleResolver::SetPackageDefaultVersion(const TString& package, ui32 version) {
- if (!KnownPackages.contains(package)) {
- return false;
- }
- PackageVersions[package] = version;
- return true;
-}
-
+void TModuleResolver::RegisterPackage(const TString& package) {
+ KnownPackages.insert(package);
+}
+
+bool TModuleResolver::SetPackageDefaultVersion(const TString& package, ui32 version) {
+ if (!KnownPackages.contains(package)) {
+ return false;
+ }
+ PackageVersions[package] = version;
+ return true;
+}
+
const TExportTable* TModuleResolver::GetModule(const TString& module) const {
- // ParentModules and Modules should not have common keys
- const TString normalizedModuleName = NormalizeModuleName(module);
- if (ParentModules) {
- if (auto table = ParentModules->FindPtr(normalizedModuleName)) {
- return table;
- }
- }
-
- return Modules.FindPtr(normalizedModuleName);
+ // ParentModules and Modules should not have common keys
+ const TString normalizedModuleName = NormalizeModuleName(module);
+ if (ParentModules) {
+ if (auto table = ParentModules->FindPtr(normalizedModuleName)) {
+ return table;
+ }
+ }
+
+ return Modules.FindPtr(normalizedModuleName);
}
bool TModuleResolver::AddFromUrl(const TStringBuf& file, const TStringBuf& url, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) {
@@ -224,8 +224,8 @@ bool TModuleResolver::AddFromUrl(const TStringBuf& file, const TStringBuf& url,
return AddFromFile(file, ctx, syntaxVersion, packageVersion);
}
-bool TModuleResolver::AddFromFile(const TStringBuf& file, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) {
- if (!UserData) {
+bool TModuleResolver::AddFromFile(const TStringBuf& file, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) {
+ if (!UserData) {
ctx.AddError(TIssue(TPosition(), "Loading libraries is prohibited"));
return false;
}
@@ -238,7 +238,7 @@ bool TModuleResolver::AddFromFile(const TStringBuf& file, TExprContext& ctx, ui1
return false;
}
- const TUserDataBlock* block = UserData->FindUserDataBlock(fullName);
+ const TUserDataBlock* block = UserData->FindUserDataBlock(fullName);
if (!block) {
ctx.AddError(TIssue(TStringBuilder() << "File not found: " << file));
@@ -247,66 +247,66 @@ bool TModuleResolver::AddFromFile(const TStringBuf& file, TExprContext& ctx, ui1
auto moduleName = TModuleResolver::NormalizeModuleName(TString(file));
if (GetModule(moduleName) || Libs.contains(moduleName)) {
- auto it = Libs.find(moduleName);
- if (it != Libs.end() && it->second.contains(packageVersion)) {
- // TODO (YQL-7170): find better fix
- // ctx.AddError(TIssue({0,0,TString(fullName)}, TStringBuilder() << "File is already loaded as library"));
- return true; // false
- }
+ auto it = Libs.find(moduleName);
+ if (it != Libs.end() && it->second.contains(packageVersion)) {
+ // TODO (YQL-7170): find better fix
+ // ctx.AddError(TIssue({0,0,TString(fullName)}, TStringBuilder() << "File is already loaded as library"));
+ return true; // false
+ }
}
TString body;
- switch (block->Type) {
- case EUserDataType::RAW_INLINE_DATA:
+ switch (block->Type) {
+ case EUserDataType::RAW_INLINE_DATA:
body = block->Data;
- break;
- case EUserDataType::PATH:
+ break;
+ case EUserDataType::PATH:
body = TFileInput(block->Data).ReadAll();
- break;
- case EUserDataType::URL:
+ break;
+ case EUserDataType::URL:
if (!UrlLoader) {
ctx.AddError(TIssue(TStringBuilder() << "Unable to load file \"" << file
<< "\" from url, because url loader is not available"));
return false;
}
- body = UrlLoader->Load(block->Data, block->UrlToken);
- break;
- default:
- throw yexception() << "Unknown block type " << block->Type;
- }
-
- return AddFromMemory(fullName, moduleName, isYql, body, ctx, syntaxVersion, packageVersion);
-}
-
-bool TModuleResolver::AddFromMemory(const TStringBuf& file, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) {
- TString unusedModuleName;
- return AddFromMemory(file, body, ctx, syntaxVersion, packageVersion, unusedModuleName);
-}
-
-bool TModuleResolver::AddFromMemory(const TStringBuf& file, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion, TString& moduleName, std::vector<TString>* exports, std::vector<TString>* imports) {
- const auto fullName = TUserDataStorage::MakeFullName(file);
- bool isSql = file.EndsWith(".sql");
- bool isYql = file.EndsWith(".yql");
- if (!isSql && !isYql) {
+ body = UrlLoader->Load(block->Data, block->UrlToken);
+ break;
+ default:
+ throw yexception() << "Unknown block type " << block->Type;
+ }
+
+ return AddFromMemory(fullName, moduleName, isYql, body, ctx, syntaxVersion, packageVersion);
+}
+
+bool TModuleResolver::AddFromMemory(const TStringBuf& file, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) {
+ TString unusedModuleName;
+ return AddFromMemory(file, body, ctx, syntaxVersion, packageVersion, unusedModuleName);
+}
+
+bool TModuleResolver::AddFromMemory(const TStringBuf& file, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion, TString& moduleName, std::vector<TString>* exports, std::vector<TString>* imports) {
+ const auto fullName = TUserDataStorage::MakeFullName(file);
+ bool isSql = file.EndsWith(".sql");
+ bool isYql = file.EndsWith(".yql");
+ if (!isSql && !isYql) {
ctx.AddError(TIssue(TStringBuilder() << "Unsupported syntax of library file, expected one of (.sql, .yql): " << file));
- return false;
- }
-
- moduleName = TModuleResolver::NormalizeModuleName(TString(file));
- if (GetModule(moduleName) || Libs.contains(moduleName)) {
- auto it = Libs.find(moduleName);
- if (it != Libs.end() && it->second.contains(packageVersion)) {
- // TODO (YQL-7170): find better fix
- // ctx.AddError(TIssue({0,0,TString(fullName)}, TStringBuilder() << "File is already loaded as library"));
- return true; // false
- }
- }
-
- return AddFromMemory(fullName, moduleName, isYql, body, ctx, syntaxVersion, packageVersion, exports, imports);
-}
-
-bool TModuleResolver::AddFromMemory(const TString& fullName, const TString& moduleName, bool isYql, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion, std::vector<TString>* exports, std::vector<TString>* imports) {
+ return false;
+ }
+
+ moduleName = TModuleResolver::NormalizeModuleName(TString(file));
+ if (GetModule(moduleName) || Libs.contains(moduleName)) {
+ auto it = Libs.find(moduleName);
+ if (it != Libs.end() && it->second.contains(packageVersion)) {
+ // TODO (YQL-7170): find better fix
+ // ctx.AddError(TIssue({0,0,TString(fullName)}, TStringBuilder() << "File is already loaded as library"));
+ return true; // false
+ }
+ }
+
+ return AddFromMemory(fullName, moduleName, isYql, body, ctx, syntaxVersion, packageVersion, exports, imports);
+}
+
+bool TModuleResolver::AddFromMemory(const TString& fullName, const TString& moduleName, bool isYql, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion, std::vector<TString>* exports, std::vector<TString>* imports) {
TAstParseResult astRes;
if (isYql) {
astRes = ParseAst(body, nullptr, fullName);
@@ -346,90 +346,90 @@ bool TModuleResolver::AddFromMemory(const TString& fullName, const TString& modu
}
}
- if (exports) {
- exports->clear();
+ if (exports) {
+ exports->clear();
for (auto p : cohesion.Exports.Symbols()) {
- exports->push_back(p.first);
- }
- }
-
- if (imports) {
- imports->clear();
- for (auto p : cohesion.Imports) {
- imports->push_back(p.second.first);
- }
- }
-
- Libs[moduleName][packageVersion] = std::move(cohesion);
+ exports->push_back(p.first);
+ }
+ }
+
+ if (imports) {
+ imports->clear();
+ for (auto p : cohesion.Imports) {
+ imports->push_back(p.second.first);
+ }
+ }
+
+ Libs[moduleName][packageVersion] = std::move(cohesion);
return true;
}
bool TModuleResolver::Link(TExprContext& ctx) {
- std::function<const TExportTable*(const TString&)> f = [this](const TString& normalizedModuleName) -> const TExportTable* {
- return this->GetModule(normalizedModuleName);
- };
-
- THashMap<TString, TLibraryCohesion> libs = FilterLibsByVersion();
- if (!LinkLibraries(libs, ctx, LibsContext, f)) {
+ std::function<const TExportTable*(const TString&)> f = [this](const TString& normalizedModuleName) -> const TExportTable* {
+ return this->GetModule(normalizedModuleName);
+ };
+
+ THashMap<TString, TLibraryCohesion> libs = FilterLibsByVersion();
+ if (!LinkLibraries(libs, ctx, LibsContext, f)) {
return false;
}
- for (auto& x : libs) {
+ for (auto& x : libs) {
Modules.emplace(x.first, std::move(x.second.Exports));
}
Libs.clear();
- PackageVersions.clear();
+ PackageVersions.clear();
return true;
}
-THashMap<TString, TLibraryCohesion> TModuleResolver::FilterLibsByVersion() const {
- THashMap<TString, TLibraryCohesion> result;
- for (auto p : Libs) {
- YQL_ENSURE(!p.second.empty());
-
- auto packageName = ExtractPackageNameFromModule(p.first);
- if (!packageName) {
- YQL_ENSURE(p.second.size() == 1);
- result.emplace(p.first, p.second.begin()->second);
- continue;
- }
-
- if (!KnownPackages.contains(packageName)) {
- ythrow yexception() << "Unknown package " << packageName << " is used in module " << p.first;
- }
-
- auto it = PackageVersions.find(packageName);
- const ui32 version = (it != PackageVersions.end()) ? it->second : 0;
- auto cohesionIt = p.second.find(version);
- if (cohesionIt == p.second.end()) {
- ythrow yexception() << "Unable to find library version " << version << " for package " << packageName << " and module " << p.first;
- }
- result.emplace(p.first, cohesionIt->second);
- }
- return result;
-}
-
-TString TModuleResolver::ExtractPackageNameFromModule(TStringBuf moduleName) {
- // naming convention: pkg.$code_project_name.$code_package_name.$module_name_within_package
- // module_name_within_package can contain dots
- // function returns $code_project_name.$code_package_name and we call it "package" at worker side
- TStringBuf pkg = moduleName.NextTok('/');
- if (pkg != "pkg") {
- return "";
- }
-
- TStringBuf project = moduleName.NextTok('/');
- TStringBuf package = moduleName.NextTok('/');
- if (package.empty()) {
- return "";
- }
-
- return TString(project) + "." + package;
-}
-
+THashMap<TString, TLibraryCohesion> TModuleResolver::FilterLibsByVersion() const {
+ THashMap<TString, TLibraryCohesion> result;
+ for (auto p : Libs) {
+ YQL_ENSURE(!p.second.empty());
+
+ auto packageName = ExtractPackageNameFromModule(p.first);
+ if (!packageName) {
+ YQL_ENSURE(p.second.size() == 1);
+ result.emplace(p.first, p.second.begin()->second);
+ continue;
+ }
+
+ if (!KnownPackages.contains(packageName)) {
+ ythrow yexception() << "Unknown package " << packageName << " is used in module " << p.first;
+ }
+
+ auto it = PackageVersions.find(packageName);
+ const ui32 version = (it != PackageVersions.end()) ? it->second : 0;
+ auto cohesionIt = p.second.find(version);
+ if (cohesionIt == p.second.end()) {
+ ythrow yexception() << "Unable to find library version " << version << " for package " << packageName << " and module " << p.first;
+ }
+ result.emplace(p.first, cohesionIt->second);
+ }
+ return result;
+}
+
+TString TModuleResolver::ExtractPackageNameFromModule(TStringBuf moduleName) {
+ // naming convention: pkg.$code_project_name.$code_package_name.$module_name_within_package
+ // module_name_within_package can contain dots
+ // function returns $code_project_name.$code_package_name and we call it "package" at worker side
+ TStringBuf pkg = moduleName.NextTok('/');
+ if (pkg != "pkg") {
+ return "";
+ }
+
+ TStringBuf project = moduleName.NextTok('/');
+ TStringBuf package = moduleName.NextTok('/');
+ if (package.empty()) {
+ return "";
+ }
+
+ return TString(project) + "." + package;
+}
+
void TModuleResolver::UpdateNextUniqueId(TExprContext& ctx) const {
- if (UserData && ctx.NextUniqueId < LibsContext.NextUniqueId) {
+ if (UserData && ctx.NextUniqueId < LibsContext.NextUniqueId) {
ctx.NextUniqueId = LibsContext.NextUniqueId;
}
}
@@ -438,14 +438,14 @@ ui64 TModuleResolver::GetNextUniqueId() const {
return LibsContext.NextUniqueId;
}
-IModuleResolver::TPtr TModuleResolver::CreateMutableChild() const {
- if (UserData || UrlLoader) {
- throw yexception() << "Module resolver should not contain user data and URL loader";
- }
-
- return std::make_shared<TModuleResolver>(&Modules, LibsContext.NextUniqueId, ClusterMapping, SqlFlags, OptimizeLibraries, KnownPackages, Libs);
-}
-
+IModuleResolver::TPtr TModuleResolver::CreateMutableChild() const {
+ if (UserData || UrlLoader) {
+ throw yexception() << "Module resolver should not contain user data and URL loader";
+ }
+
+ return std::make_shared<TModuleResolver>(&Modules, LibsContext.NextUniqueId, ClusterMapping, SqlFlags, OptimizeLibraries, KnownPackages, Libs);
+}
+
TString TModuleResolver::SubstParameters(const TString& str) {
if (!Parameters) {
return str;
diff --git a/ydb/library/yql/core/yql_type_annotation.h b/ydb/library/yql/core/yql_type_annotation.h
index 1a1f1fb476..23202089bc 100644
--- a/ydb/library/yql/core/yql_type_annotation.h
+++ b/ydb/library/yql/core/yql_type_annotation.h
@@ -1,9 +1,9 @@
#pragma once
#include "yql_data_provider.h"
-#include "yql_udf_index_package_set.h"
-#include "yql_udf_resolver.h"
-#include "yql_user_data_storage.h"
+#include "yql_udf_index_package_set.h"
+#include "yql_udf_resolver.h"
+#include "yql_user_data_storage.h"
#include <ydb/library/yql/public/udf/udf_validate.h>
@@ -28,7 +28,7 @@ class IUrlLoader : public TThrRefBase {
public:
~IUrlLoader() = default;
- virtual TString Load(const TString& url, const TString& token) = 0;
+ virtual TString Load(const TString& url, const TString& token) = 0;
using TPtr = TIntrusivePtr<IUrlLoader>;
};
@@ -50,21 +50,21 @@ public:
}
TModuleResolver(const TModulesTable* parentModules, ui64 nextUniqueId, const THashMap<TString, TString>& clusterMapping,
- const THashSet<TString>& sqlFlags, bool optimizeLibraries, const TSet<TString>& knownPackages, const THashMap<TString, THashMap<int, TLibraryCohesion>>& libs)
- : ParentModules(parentModules)
- , LibsContext(nextUniqueId)
- , KnownPackages(knownPackages)
- , Libs(libs)
- , ClusterMapping(clusterMapping)
+ const THashSet<TString>& sqlFlags, bool optimizeLibraries, const TSet<TString>& knownPackages, const THashMap<TString, THashMap<int, TLibraryCohesion>>& libs)
+ : ParentModules(parentModules)
+ , LibsContext(nextUniqueId)
+ , KnownPackages(knownPackages)
+ , Libs(libs)
+ , ClusterMapping(clusterMapping)
, SqlFlags(sqlFlags)
- , OptimizeLibraries(optimizeLibraries)
- {
- }
-
+ , OptimizeLibraries(optimizeLibraries)
+ {
+ }
+
static TString NormalizeModuleName(const TString& path);
- void AttachUserData(TUserDataStorage::TPtr userData) {
- UserData = userData;
+ void AttachUserData(TUserDataStorage::TPtr userData) {
+ UserData = userData;
}
void SetUrlLoader(IUrlLoader::TPtr loader) {
@@ -75,34 +75,34 @@ public:
Parameters = node;
}
- void RegisterPackage(const TString& package) override;
- bool SetPackageDefaultVersion(const TString& package, ui32 version) override;
+ void RegisterPackage(const TString& package) override;
+ bool SetPackageDefaultVersion(const TString& package, ui32 version) override;
const TExportTable* GetModule(const TString& module) const override;
- bool AddFromFile(const TStringBuf& file, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) override;
+ bool AddFromFile(const TStringBuf& file, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) override;
bool AddFromUrl(const TStringBuf& file, const TStringBuf& url, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) override;
- bool AddFromMemory(const TStringBuf& file, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) override;
- bool AddFromMemory(const TStringBuf& file, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion, TString& moduleName, std::vector<TString>* exports = nullptr, std::vector<TString>* imports = nullptr) override;
+ bool AddFromMemory(const TStringBuf& file, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion) override;
+ bool AddFromMemory(const TStringBuf& file, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion, TString& moduleName, std::vector<TString>* exports = nullptr, std::vector<TString>* imports = nullptr) override;
bool Link(TExprContext& ctx) override;
void UpdateNextUniqueId(TExprContext& ctx) const override;
ui64 GetNextUniqueId() const override;
- IModuleResolver::TPtr CreateMutableChild() const override;
+ IModuleResolver::TPtr CreateMutableChild() const override;
-private:
- bool AddFromMemory(const TString& fullName, const TString& moduleName, bool isYql, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion, std::vector<TString>* exports = nullptr, std::vector<TString>* imports = nullptr);
- THashMap<TString, TLibraryCohesion> FilterLibsByVersion() const;
- static TString ExtractPackageNameFromModule(TStringBuf moduleName);
+private:
+ bool AddFromMemory(const TString& fullName, const TString& moduleName, bool isYql, const TString& body, TExprContext& ctx, ui16 syntaxVersion, ui32 packageVersion, std::vector<TString>* exports = nullptr, std::vector<TString>* imports = nullptr);
+ THashMap<TString, TLibraryCohesion> FilterLibsByVersion() const;
+ static TString ExtractPackageNameFromModule(TStringBuf moduleName);
TString SubstParameters(const TString& str);
-
-private:
+
+private:
THolder<TExprContext> OwnedCtx;
- const TModulesTable* ParentModules = nullptr;
- TUserDataStorage::TPtr UserData;
+ const TModulesTable* ParentModules = nullptr;
+ TUserDataStorage::TPtr UserData;
IUrlLoader::TPtr UrlLoader;
TMaybe<NYT::TNode> Parameters;
TExprContext LibsContext;
- TSet<TString> KnownPackages;
- THashMap<TString, ui32> PackageVersions;
- THashMap<TString, THashMap<int, TLibraryCohesion>> Libs;
+ TSet<TString> KnownPackages;
+ THashMap<TString, ui32> PackageVersions;
+ THashMap<TString, THashMap<int, TLibraryCohesion>> Libs;
TModulesTable Modules;
const THashMap<TString, TString> ClusterMapping;
const THashSet<TString> SqlFlags;
@@ -179,22 +179,22 @@ struct TTypeAnnotationContext: public TThrRefBase {
THashMap<TString, TIntrusivePtr<IDataProvider>> DataSinkMap;
TVector<TIntrusivePtr<IDataProvider>> DataSources;
TVector<TIntrusivePtr<IDataProvider>> DataSinks;
- TUdfIndex::TPtr UdfIndex;
- TUdfIndexPackageSet::TPtr UdfIndexPackageSet;
+ TUdfIndex::TPtr UdfIndex;
+ TUdfIndexPackageSet::TPtr UdfIndexPackageSet;
IUdfResolver::TPtr UdfResolver;
THashMap<TString, IUdfResolver::TImport> UdfImports; // aliases of files that was imported => list of module names
TUdfModulesTable UdfModules;
TString PureResultDataSource;
TVector<TString> AvailablePureResultDataSources;
TString FullResultDataSink;
- TUserDataStorage::TPtr UserDataStorage;
+ TUserDataStorage::TPtr UserDataStorage;
TUserDataTable UserDataStorageCrutches;
TYqlOperationOptions OperationOptions;
TVector<TCredentialTablePtr> Credentials;
TUserCredentials UserCredentials;
IModuleResolver::TPtr Modules;
NUdf::EValidateMode ValidateMode = NUdf::EValidateMode::None;
- bool DisableNativeUdfSupport = false;
+ bool DisableNativeUdfSupport = false;
TMaybe<TString> OptLLVM;
bool IsReadOnly = false;
TAutoPtr<IGraphTransformer> CustomInstantTypeTransformer;
@@ -234,7 +234,7 @@ struct TTypeAnnotationContext: public TThrRefBase {
std::tuple<std::optional<ui64>, std::optional<double>, std::optional<TGUID>> CachedRandom;
std::optional<bool> InitializeResult;
-
+
template <typename T>
T GetRandom() const noexcept;
@@ -279,10 +279,10 @@ struct TTypeAnnotationContext: public TThrRefBase {
}
bool Initialize(TExprContext& ctx);
- bool DoInitialize(TExprContext& ctx);
-
+ bool DoInitialize(TExprContext& ctx);
+
const TCredential* FindCredential(const TStringBuf& name) const;
- TString FindCredentialContent(const TStringBuf& name1, const TStringBuf& name2, const TString& defaultContent) const;
+ TString FindCredentialContent(const TStringBuf& name1, const TStringBuf& name2, const TString& defaultContent) const;
TString GetDefaultDataSource() const;
TMaybe<ui32> TranslateOperationId(ui64 id) const {
diff --git a/ydb/library/yql/core/yql_udf_index.cpp b/ydb/library/yql/core/yql_udf_index.cpp
index bbd6b30781..2aef17bbee 100644
--- a/ydb/library/yql/core/yql_udf_index.cpp
+++ b/ydb/library/yql/core/yql_udf_index.cpp
@@ -1,229 +1,229 @@
-#include "yql_udf_index.h"
+#include "yql_udf_index.h"
#include <ydb/library/yql/minikql/mkql_function_registry.h>
-
-namespace NYql {
-namespace {
-
-TVector<TResourceInfo::TPtr> ConvertResolveResultToResources(const TResolveResult& resolveResult, const TMap<TString, TString>& pathsWithMd5, bool isTrusted) {
- THashMap<TString, size_t> importIndex; // module => Imports index
- THashMap<TString, size_t> packageIndex; // package => Imports index
- THashMap<TString, TVector<TFunctionInfo>> functionIndex; // package => vector of functions
- for (size_t i = 0; i < resolveResult.ImportsSize(); ++i) {
- auto& import = resolveResult.GetImports(i);
- if (!import.ModulesSize()) {
- continue;
- }
-
- for (auto& m : import.GetModules()) {
- importIndex.emplace(m, i);
- }
-
- const TString package = import.GetModules(0);
- packageIndex.emplace(package, i);
- functionIndex.emplace(package, TVector<TFunctionInfo>());
- }
-
- for (auto& udf : resolveResult.GetUdfs()) {
- const TString module = TString(NKikimr::NMiniKQL::ModuleName(TStringBuf(udf.GetName())));
- const auto& import = resolveResult.GetImports(importIndex.at(module));
- const TString package = import.GetModules(0);
-
- TFunctionInfo newFunction;
- newFunction.Name = udf.GetName();
- newFunction.IsTypeAwareness = udf.GetIsTypeAwareness();
- newFunction.ArgCount = udf.GetArgCount();
- newFunction.OptionalArgCount = udf.GetOptionalArgCount();
- if (udf.HasCallableType()) {
- newFunction.CallableType = udf.GetCallableType();
- }
-
- if (udf.HasRunConfigType()) {
- newFunction.RunConfigType = udf.GetRunConfigType();
- }
-
- functionIndex[package].push_back(newFunction);
- }
-
- TVector<TResourceInfo::TPtr> result;
- result.reserve(functionIndex.size());
- for (auto& p : functionIndex) {
- const auto& import = resolveResult.GetImports(packageIndex.at(p.first));
-
- auto info = MakeIntrusive<TResourceInfo>();
- info->IsTrusted = isTrusted;
- auto md5 = pathsWithMd5.FindPtr(import.GetFileAlias());
- info->Link = TDownloadLink::File(import.GetFileAlias(), md5 ? *md5 : "");
- info->Modules.insert(import.GetModules().begin(), import.GetModules().end());
- info->SetFunctions(p.second);
-
- result.push_back(info);
- }
-
- return result;
-}
-
-void AddResolveResultToRegistry(const TResolveResult& resolveResult, const TMap<TString, TString>& pathsWithMd5, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
- auto resources = ConvertResolveResultToResources(resolveResult, pathsWithMd5, isTrusted);
- registry.RegisterResources(resources, mode);
-}
-
-}
-
-TUdfIndex::TUdfIndex() {
-}
-
-TUdfIndex::TUdfIndex(const TMap<TString, TResourceInfo::TPtr>& resources)
- : Resources_(resources)
-{
-
-}
-
-bool TUdfIndex::ContainsModule(const TString& moduleName) const {
+
+namespace NYql {
+namespace {
+
+TVector<TResourceInfo::TPtr> ConvertResolveResultToResources(const TResolveResult& resolveResult, const TMap<TString, TString>& pathsWithMd5, bool isTrusted) {
+ THashMap<TString, size_t> importIndex; // module => Imports index
+ THashMap<TString, size_t> packageIndex; // package => Imports index
+ THashMap<TString, TVector<TFunctionInfo>> functionIndex; // package => vector of functions
+ for (size_t i = 0; i < resolveResult.ImportsSize(); ++i) {
+ auto& import = resolveResult.GetImports(i);
+ if (!import.ModulesSize()) {
+ continue;
+ }
+
+ for (auto& m : import.GetModules()) {
+ importIndex.emplace(m, i);
+ }
+
+ const TString package = import.GetModules(0);
+ packageIndex.emplace(package, i);
+ functionIndex.emplace(package, TVector<TFunctionInfo>());
+ }
+
+ for (auto& udf : resolveResult.GetUdfs()) {
+ const TString module = TString(NKikimr::NMiniKQL::ModuleName(TStringBuf(udf.GetName())));
+ const auto& import = resolveResult.GetImports(importIndex.at(module));
+ const TString package = import.GetModules(0);
+
+ TFunctionInfo newFunction;
+ newFunction.Name = udf.GetName();
+ newFunction.IsTypeAwareness = udf.GetIsTypeAwareness();
+ newFunction.ArgCount = udf.GetArgCount();
+ newFunction.OptionalArgCount = udf.GetOptionalArgCount();
+ if (udf.HasCallableType()) {
+ newFunction.CallableType = udf.GetCallableType();
+ }
+
+ if (udf.HasRunConfigType()) {
+ newFunction.RunConfigType = udf.GetRunConfigType();
+ }
+
+ functionIndex[package].push_back(newFunction);
+ }
+
+ TVector<TResourceInfo::TPtr> result;
+ result.reserve(functionIndex.size());
+ for (auto& p : functionIndex) {
+ const auto& import = resolveResult.GetImports(packageIndex.at(p.first));
+
+ auto info = MakeIntrusive<TResourceInfo>();
+ info->IsTrusted = isTrusted;
+ auto md5 = pathsWithMd5.FindPtr(import.GetFileAlias());
+ info->Link = TDownloadLink::File(import.GetFileAlias(), md5 ? *md5 : "");
+ info->Modules.insert(import.GetModules().begin(), import.GetModules().end());
+ info->SetFunctions(p.second);
+
+ result.push_back(info);
+ }
+
+ return result;
+}
+
+void AddResolveResultToRegistry(const TResolveResult& resolveResult, const TMap<TString, TString>& pathsWithMd5, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
+ auto resources = ConvertResolveResultToResources(resolveResult, pathsWithMd5, isTrusted);
+ registry.RegisterResources(resources, mode);
+}
+
+}
+
+TUdfIndex::TUdfIndex() {
+}
+
+TUdfIndex::TUdfIndex(const TMap<TString, TResourceInfo::TPtr>& resources)
+ : Resources_(resources)
+{
+
+}
+
+bool TUdfIndex::ContainsModule(const TString& moduleName) const {
return Resources_.contains(moduleName);
-}
-
-bool TUdfIndex::ContainsAnyModule(const TSet<TString>& modules) const {
- return AnyOf(modules, [this](auto& m) {
- return this->ContainsModule(m);
- });
-}
-
-bool TUdfIndex::FindFunction(const TString& moduleName, const TString& functionName, TFunctionInfo& function) const {
- auto r = FindResourceByModule(moduleName);
- if (!r) {
- return false;
- }
-
- auto f = r->Functions.FindPtr(functionName);
- if (!f) {
- return false;
- }
-
- function = *f;
- return true;
-}
-
-TResourceInfo::TPtr TUdfIndex::FindResourceByModule(const TString& moduleName) const {
- auto p = Resources_.FindPtr(moduleName);
- return p ? *p : nullptr;
-}
-
-TSet<TResourceInfo::TPtr> TUdfIndex::FindResourcesByModules(const TSet<TString>& modules) const {
- TSet<TResourceInfo::TPtr> result;
- for (auto& m : modules) {
- auto r = FindResourceByModule(m);
- if (r) {
- result.insert(r);
- }
- }
- return result;
-}
-
-void TUdfIndex::UnregisterResource(TResourceInfo::TPtr resource) {
- for (auto& m : resource->Modules) {
- Resources_.erase(m);
- }
- // resource pointer should be alive here to avoid problems with erase
-}
-
-void TUdfIndex::RegisterResource(const TResourceInfo::TPtr& resource, EOverrideMode mode) {
- Y_ENSURE(resource);
- if (resource->Modules.empty()) {
- // quite strange, but let's ignore
- return;
- }
-
- // detect conflict first
- if (ContainsAnyModule(resource->Modules)) {
- switch (mode) {
- case EOverrideMode::PreserveExisting:
- return;
-
- case EOverrideMode::RaiseError:
- // todo: specify module name(s) in intersection
- ythrow yexception() << "Conflict during resource " << resource->Link.Path << " registration";
-
- case EOverrideMode::ReplaceWithNew: {
- // we have to find resources and remove all related modules:
- // 1. find resources by newModules
- // 2. remove all functions related to found resources
-
- auto existingResources = FindResourcesByModules(resource->Modules);
- Y_ENSURE(!existingResources.empty());
-
- for (auto& r : existingResources) {
- UnregisterResource(r);
- }
-
- break;
- }
- } // switch
- }
-
- for (auto& m : resource->Modules) {
- Resources_.emplace(m, resource);
- }
-}
-
-TIntrusivePtr<TUdfIndex> TUdfIndex::Clone() const {
- return new TUdfIndex(Resources_);
-}
-
-void TUdfIndex::RegisterResources(const TVector<TResourceInfo::TPtr>& resources, EOverrideMode mode) {
- for (auto& r : resources) {
- RegisterResource(r, mode);
- }
-}
-
-void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TVector<TString>& paths, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
- TMap<TString, TString> pathsWithMd5;
- for (const auto& path : paths) {
- pathsWithMd5[path] = "";
- }
- LoadRichMetadataToUdfIndex(resolver, pathsWithMd5, isTrusted, mode, registry);
-}
-
-void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TMap<TString, TString>& pathsWithMd5, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
- TVector<TString> paths;
- paths.reserve(pathsWithMd5.size());
- for (const auto& p : pathsWithMd5) {
- paths.push_back(p.first);
- }
- const TResolveResult resolveResult = LoadRichMetadata(resolver, paths);
- AddResolveResultToRegistry(resolveResult, pathsWithMd5, isTrusted, mode, registry);
-}
-
-void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TVector<TUserDataBlock>& blocks, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
- // we can work with file path only
- TMap<TString, TString> pathsWithMd5;
- for (auto& b : blocks) {
- switch (b.Type) {
- case EUserDataType::URL:
- if (!b.FrozenFile) {
- ythrow yexception() << "DataBlock for " << b.Data << " is not frozen";
- }
- pathsWithMd5.emplace(b.FrozenFile->GetPath().GetPath(), b.FrozenFile->GetMd5());
- break;
- case EUserDataType::PATH:
- {
- TString md5;
- if (b.FrozenFile) {
- md5 = b.FrozenFile->GetMd5();
- }
- pathsWithMd5.emplace(b.Data, md5);
- break;
- }
- default:
- ythrow yexception() << "Unsupport data block type for " << b.Data;
- }
- }
- LoadRichMetadataToUdfIndex(resolver, pathsWithMd5, isTrusted, mode, registry);
-}
-
-void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TUserDataBlock& block, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
- TVector<TUserDataBlock> blocks({ block });
- const bool isTrusted = false;
- LoadRichMetadataToUdfIndex(resolver, blocks, isTrusted, mode, registry);
-}
-
-} // namespace NYql
+}
+
+bool TUdfIndex::ContainsAnyModule(const TSet<TString>& modules) const {
+ return AnyOf(modules, [this](auto& m) {
+ return this->ContainsModule(m);
+ });
+}
+
+bool TUdfIndex::FindFunction(const TString& moduleName, const TString& functionName, TFunctionInfo& function) const {
+ auto r = FindResourceByModule(moduleName);
+ if (!r) {
+ return false;
+ }
+
+ auto f = r->Functions.FindPtr(functionName);
+ if (!f) {
+ return false;
+ }
+
+ function = *f;
+ return true;
+}
+
+TResourceInfo::TPtr TUdfIndex::FindResourceByModule(const TString& moduleName) const {
+ auto p = Resources_.FindPtr(moduleName);
+ return p ? *p : nullptr;
+}
+
+TSet<TResourceInfo::TPtr> TUdfIndex::FindResourcesByModules(const TSet<TString>& modules) const {
+ TSet<TResourceInfo::TPtr> result;
+ for (auto& m : modules) {
+ auto r = FindResourceByModule(m);
+ if (r) {
+ result.insert(r);
+ }
+ }
+ return result;
+}
+
+void TUdfIndex::UnregisterResource(TResourceInfo::TPtr resource) {
+ for (auto& m : resource->Modules) {
+ Resources_.erase(m);
+ }
+ // resource pointer should be alive here to avoid problems with erase
+}
+
+void TUdfIndex::RegisterResource(const TResourceInfo::TPtr& resource, EOverrideMode mode) {
+ Y_ENSURE(resource);
+ if (resource->Modules.empty()) {
+ // quite strange, but let's ignore
+ return;
+ }
+
+ // detect conflict first
+ if (ContainsAnyModule(resource->Modules)) {
+ switch (mode) {
+ case EOverrideMode::PreserveExisting:
+ return;
+
+ case EOverrideMode::RaiseError:
+ // todo: specify module name(s) in intersection
+ ythrow yexception() << "Conflict during resource " << resource->Link.Path << " registration";
+
+ case EOverrideMode::ReplaceWithNew: {
+ // we have to find resources and remove all related modules:
+ // 1. find resources by newModules
+ // 2. remove all functions related to found resources
+
+ auto existingResources = FindResourcesByModules(resource->Modules);
+ Y_ENSURE(!existingResources.empty());
+
+ for (auto& r : existingResources) {
+ UnregisterResource(r);
+ }
+
+ break;
+ }
+ } // switch
+ }
+
+ for (auto& m : resource->Modules) {
+ Resources_.emplace(m, resource);
+ }
+}
+
+TIntrusivePtr<TUdfIndex> TUdfIndex::Clone() const {
+ return new TUdfIndex(Resources_);
+}
+
+void TUdfIndex::RegisterResources(const TVector<TResourceInfo::TPtr>& resources, EOverrideMode mode) {
+ for (auto& r : resources) {
+ RegisterResource(r, mode);
+ }
+}
+
+void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TVector<TString>& paths, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
+ TMap<TString, TString> pathsWithMd5;
+ for (const auto& path : paths) {
+ pathsWithMd5[path] = "";
+ }
+ LoadRichMetadataToUdfIndex(resolver, pathsWithMd5, isTrusted, mode, registry);
+}
+
+void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TMap<TString, TString>& pathsWithMd5, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
+ TVector<TString> paths;
+ paths.reserve(pathsWithMd5.size());
+ for (const auto& p : pathsWithMd5) {
+ paths.push_back(p.first);
+ }
+ const TResolveResult resolveResult = LoadRichMetadata(resolver, paths);
+ AddResolveResultToRegistry(resolveResult, pathsWithMd5, isTrusted, mode, registry);
+}
+
+void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TVector<TUserDataBlock>& blocks, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
+ // we can work with file path only
+ TMap<TString, TString> pathsWithMd5;
+ for (auto& b : blocks) {
+ switch (b.Type) {
+ case EUserDataType::URL:
+ if (!b.FrozenFile) {
+ ythrow yexception() << "DataBlock for " << b.Data << " is not frozen";
+ }
+ pathsWithMd5.emplace(b.FrozenFile->GetPath().GetPath(), b.FrozenFile->GetMd5());
+ break;
+ case EUserDataType::PATH:
+ {
+ TString md5;
+ if (b.FrozenFile) {
+ md5 = b.FrozenFile->GetMd5();
+ }
+ pathsWithMd5.emplace(b.Data, md5);
+ break;
+ }
+ default:
+ ythrow yexception() << "Unsupport data block type for " << b.Data;
+ }
+ }
+ LoadRichMetadataToUdfIndex(resolver, pathsWithMd5, isTrusted, mode, registry);
+}
+
+void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TUserDataBlock& block, TUdfIndex::EOverrideMode mode, TUdfIndex& registry) {
+ TVector<TUserDataBlock> blocks({ block });
+ const bool isTrusted = false;
+ LoadRichMetadataToUdfIndex(resolver, blocks, isTrusted, mode, registry);
+}
+
+} // namespace NYql
diff --git a/ydb/library/yql/core/yql_udf_index.h b/ydb/library/yql/core/yql_udf_index.h
index 51f768d9de..de3bf6572b 100644
--- a/ydb/library/yql/core/yql_udf_index.h
+++ b/ydb/library/yql/core/yql_udf_index.h
@@ -1,131 +1,131 @@
-#pragma once
-
-#include "yql_udf_resolver.h"
+#pragma once
+
+#include "yql_udf_resolver.h"
#include <util/generic/hash.h>
-#include <util/generic/map.h>
-#include <util/generic/maybe.h>
-#include <util/generic/set.h>
-#include <util/generic/string.h>
-#include <util/generic/vector.h>
-
-namespace NYql {
-
-struct TFunctionInfo {
- TString Name;
- int ArgCount = 0;
- int OptionalArgCount = 0;
- bool IsTypeAwareness = false;
- TString CallableType;
- TString RunConfigType;
-};
-
-// todo: specify whether path is frozen
-struct TDownloadLink {
- bool IsUrl = false;
- TString Path;
- TString Md5;
-
- TDownloadLink() {
-
- }
-
- TDownloadLink(bool isUrl, const TString& path, const TString& md5)
- : IsUrl(isUrl)
- , Path(path)
- , Md5(md5)
- {
- }
-
- TDownloadLink(const TDownloadLink&) = default;
- TDownloadLink& operator=(const TDownloadLink&) = default;
-
- static TDownloadLink Url(const TString& path, const TString& md5 = "") {
- return { true, path, md5 };
- }
-
- static TDownloadLink File(const TString& path, const TString& md5 = "") {
- return { false, path, md5 };
- }
-
- bool operator==(const TDownloadLink& other) const {
- return std::tie(IsUrl, Path, Md5) == std::tie(other.IsUrl, other.Path, Md5);
- }
-
- bool operator!=(const TDownloadLink& other) const {
- return !(*this == other);
- }
-
- size_t Hash() const {
- return CombineHashes(
+#include <util/generic/map.h>
+#include <util/generic/maybe.h>
+#include <util/generic/set.h>
+#include <util/generic/string.h>
+#include <util/generic/vector.h>
+
+namespace NYql {
+
+struct TFunctionInfo {
+ TString Name;
+ int ArgCount = 0;
+ int OptionalArgCount = 0;
+ bool IsTypeAwareness = false;
+ TString CallableType;
+ TString RunConfigType;
+};
+
+// todo: specify whether path is frozen
+struct TDownloadLink {
+ bool IsUrl = false;
+ TString Path;
+ TString Md5;
+
+ TDownloadLink() {
+
+ }
+
+ TDownloadLink(bool isUrl, const TString& path, const TString& md5)
+ : IsUrl(isUrl)
+ , Path(path)
+ , Md5(md5)
+ {
+ }
+
+ TDownloadLink(const TDownloadLink&) = default;
+ TDownloadLink& operator=(const TDownloadLink&) = default;
+
+ static TDownloadLink Url(const TString& path, const TString& md5 = "") {
+ return { true, path, md5 };
+ }
+
+ static TDownloadLink File(const TString& path, const TString& md5 = "") {
+ return { false, path, md5 };
+ }
+
+ bool operator==(const TDownloadLink& other) const {
+ return std::tie(IsUrl, Path, Md5) == std::tie(other.IsUrl, other.Path, Md5);
+ }
+
+ bool operator!=(const TDownloadLink& other) const {
+ return !(*this == other);
+ }
+
+ size_t Hash() const {
+ return CombineHashes(
CombineHashes((size_t)IsUrl, ComputeHash(Path)),
ComputeHash(Md5)
- );
- }
-};
-
-struct TResourceInfo : public TThrRefBase {
- typedef TIntrusiveConstPtr<TResourceInfo> TPtr;
-
- bool IsTrusted = false;
- TDownloadLink Link;
- TSet<TString> Modules;
- TMap<TString, TFunctionInfo> Functions;
-
- void SetFunctions(const TVector<TFunctionInfo>& functions) {
- for (auto& f : functions) {
- Functions.emplace(f.Name, f);
- }
- }
-};
-
-inline bool operator<(const TResourceInfo::TPtr& p1, const TResourceInfo::TPtr& p2) {
- return p1.Get() < p2.Get();
-}
-
-class TUdfIndex : public TThrRefBase {
-public:
- typedef TIntrusivePtr<TUdfIndex> TPtr;
-
-public:
- // todo: trusted resources should not be replaceble regardless of specified mode
- enum class EOverrideMode {
- PreserveExisting,
- ReplaceWithNew,
- RaiseError
- };
-
-public:
- TUdfIndex();
- bool ContainsModule(const TString& moduleName) const;
- bool FindFunction(const TString& moduleName, const TString& functionName, TFunctionInfo& function) const;
- TResourceInfo::TPtr FindResourceByModule(const TString& moduleName) const;
-
- /*
- New resource can contain already registered module.
- In this case 'mode' will be used to resolve conflicts.
- For instance, if mode == ReplaceWithNew all functions from old resource will be removed and new functions will be registered.
- It is important to do it atomically because two .so cannot have intersecting module lists
- */
- void RegisterResource(const TResourceInfo::TPtr& resource, EOverrideMode mode);
- void RegisterResources(const TVector<TResourceInfo::TPtr>& resources, EOverrideMode mode);
-
- TIntrusivePtr<TUdfIndex> Clone() const;
-
-private:
- explicit TUdfIndex(const TMap<TString, TResourceInfo::TPtr>& resources);
-
- bool ContainsAnyModule(const TSet<TString>& modules) const;
- TSet<TResourceInfo::TPtr> FindResourcesByModules(const TSet<TString>& modules) const;
- void UnregisterResource(TResourceInfo::TPtr resource);
-
-private:
- // module => Resource
- TMap<TString, TResourceInfo::TPtr> Resources_;
-};
-
-void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TVector<TString>& paths, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry);
-void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TMap<TString, TString>& pathsWithMd5, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry);
-void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TVector<TUserDataBlock>& blocks, TUdfIndex::EOverrideMode mode, TUdfIndex& registry);
-void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TUserDataBlock& block, TUdfIndex::EOverrideMode mode, TUdfIndex& registry);
-
-}
+ );
+ }
+};
+
+struct TResourceInfo : public TThrRefBase {
+ typedef TIntrusiveConstPtr<TResourceInfo> TPtr;
+
+ bool IsTrusted = false;
+ TDownloadLink Link;
+ TSet<TString> Modules;
+ TMap<TString, TFunctionInfo> Functions;
+
+ void SetFunctions(const TVector<TFunctionInfo>& functions) {
+ for (auto& f : functions) {
+ Functions.emplace(f.Name, f);
+ }
+ }
+};
+
+inline bool operator<(const TResourceInfo::TPtr& p1, const TResourceInfo::TPtr& p2) {
+ return p1.Get() < p2.Get();
+}
+
+class TUdfIndex : public TThrRefBase {
+public:
+ typedef TIntrusivePtr<TUdfIndex> TPtr;
+
+public:
+ // todo: trusted resources should not be replaceble regardless of specified mode
+ enum class EOverrideMode {
+ PreserveExisting,
+ ReplaceWithNew,
+ RaiseError
+ };
+
+public:
+ TUdfIndex();
+ bool ContainsModule(const TString& moduleName) const;
+ bool FindFunction(const TString& moduleName, const TString& functionName, TFunctionInfo& function) const;
+ TResourceInfo::TPtr FindResourceByModule(const TString& moduleName) const;
+
+ /*
+ New resource can contain already registered module.
+ In this case 'mode' will be used to resolve conflicts.
+ For instance, if mode == ReplaceWithNew all functions from old resource will be removed and new functions will be registered.
+ It is important to do it atomically because two .so cannot have intersecting module lists
+ */
+ void RegisterResource(const TResourceInfo::TPtr& resource, EOverrideMode mode);
+ void RegisterResources(const TVector<TResourceInfo::TPtr>& resources, EOverrideMode mode);
+
+ TIntrusivePtr<TUdfIndex> Clone() const;
+
+private:
+ explicit TUdfIndex(const TMap<TString, TResourceInfo::TPtr>& resources);
+
+ bool ContainsAnyModule(const TSet<TString>& modules) const;
+ TSet<TResourceInfo::TPtr> FindResourcesByModules(const TSet<TString>& modules) const;
+ void UnregisterResource(TResourceInfo::TPtr resource);
+
+private:
+ // module => Resource
+ TMap<TString, TResourceInfo::TPtr> Resources_;
+};
+
+void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TVector<TString>& paths, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry);
+void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TMap<TString, TString>& pathsWithMd5, bool isTrusted, TUdfIndex::EOverrideMode mode, TUdfIndex& registry);
+void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TVector<TUserDataBlock>& blocks, TUdfIndex::EOverrideMode mode, TUdfIndex& registry);
+void LoadRichMetadataToUdfIndex(const IUdfResolver& resolver, const TUserDataBlock& block, TUdfIndex::EOverrideMode mode, TUdfIndex& registry);
+
+}
diff --git a/ydb/library/yql/core/yql_udf_index_package_set.cpp b/ydb/library/yql/core/yql_udf_index_package_set.cpp
index e262d08f92..b2da644cff 100644
--- a/ydb/library/yql/core/yql_udf_index_package_set.cpp
+++ b/ydb/library/yql/core/yql_udf_index_package_set.cpp
@@ -1,61 +1,61 @@
-#include "yql_udf_index_package_set.h"
-
+#include "yql_udf_index_package_set.h"
+
#include <ydb/library/yql/utils/yql_panic.h>
-
-using namespace NYql;
-
-TUdfIndexPackageSet::TUdfIndexPackageSet() {
-}
-
-TUdfIndexPackageSet::TUdfIndexPackageSet(const TSet<TString>& knownPackages, const THashMap<TString, ui32>& packageDefaultVersions, const TMap<std::pair<TString, ui32>, TResourceInfo::TPtr>& resources)
- : KnownPackages_(knownPackages)
- , PackageDefaultVersions_(packageDefaultVersions)
- , Resources_(resources)
-{
-}
-
-void TUdfIndexPackageSet::RegisterPackage(const TString& package) {
- KnownPackages_.insert(package);
-}
-
-bool TUdfIndexPackageSet::SetPackageDefaultVersion(const TString& package, ui32 version) {
- if (!KnownPackages_.contains(package)) {
- return false;
- }
-
- PackageDefaultVersions_[package] = version;
- return true;
-}
-
-void TUdfIndexPackageSet::RegisterResource(const TString& package, ui32 version, const TResourceInfo::TPtr& resource) {
- YQL_ENSURE(resource != nullptr);
- YQL_ENSURE(KnownPackages_.contains(package), "Unknown package " << package);
- Resources_.emplace(std::make_pair(package, version), resource);
-}
-
-bool TUdfIndexPackageSet::AddResourceTo(const TString& package, ui32 version, const TUdfIndex::TPtr& target) const {
- auto it = Resources_.find(std::make_pair(package, version));
- if (it == Resources_.end()) {
- return KnownPackages_.contains(package);
- }
- target->RegisterResource(it->second, TUdfIndex::EOverrideMode::ReplaceWithNew);
- return true;
-}
-
-void TUdfIndexPackageSet::AddResourcesTo(const TUdfIndex::TPtr& target) const {
- YQL_ENSURE(target != nullptr);
- for (auto& package : KnownPackages_) {
- auto vIt = PackageDefaultVersions_.find(package);
- const ui32 version = (vIt != PackageDefaultVersions_.end()) ? vIt->second : 0;
- auto it = Resources_.find(std::make_pair(package, version));
- if (it == Resources_.end()) {
- // todo: consider error?
- continue;
- }
- target->RegisterResource(it->second, TUdfIndex::EOverrideMode::ReplaceWithNew);
- }
-}
-
-TUdfIndexPackageSet::TPtr TUdfIndexPackageSet::Clone() const {
- return new TUdfIndexPackageSet(KnownPackages_, PackageDefaultVersions_, Resources_);
-}
+
+using namespace NYql;
+
+TUdfIndexPackageSet::TUdfIndexPackageSet() {
+}
+
+TUdfIndexPackageSet::TUdfIndexPackageSet(const TSet<TString>& knownPackages, const THashMap<TString, ui32>& packageDefaultVersions, const TMap<std::pair<TString, ui32>, TResourceInfo::TPtr>& resources)
+ : KnownPackages_(knownPackages)
+ , PackageDefaultVersions_(packageDefaultVersions)
+ , Resources_(resources)
+{
+}
+
+void TUdfIndexPackageSet::RegisterPackage(const TString& package) {
+ KnownPackages_.insert(package);
+}
+
+bool TUdfIndexPackageSet::SetPackageDefaultVersion(const TString& package, ui32 version) {
+ if (!KnownPackages_.contains(package)) {
+ return false;
+ }
+
+ PackageDefaultVersions_[package] = version;
+ return true;
+}
+
+void TUdfIndexPackageSet::RegisterResource(const TString& package, ui32 version, const TResourceInfo::TPtr& resource) {
+ YQL_ENSURE(resource != nullptr);
+ YQL_ENSURE(KnownPackages_.contains(package), "Unknown package " << package);
+ Resources_.emplace(std::make_pair(package, version), resource);
+}
+
+bool TUdfIndexPackageSet::AddResourceTo(const TString& package, ui32 version, const TUdfIndex::TPtr& target) const {
+ auto it = Resources_.find(std::make_pair(package, version));
+ if (it == Resources_.end()) {
+ return KnownPackages_.contains(package);
+ }
+ target->RegisterResource(it->second, TUdfIndex::EOverrideMode::ReplaceWithNew);
+ return true;
+}
+
+void TUdfIndexPackageSet::AddResourcesTo(const TUdfIndex::TPtr& target) const {
+ YQL_ENSURE(target != nullptr);
+ for (auto& package : KnownPackages_) {
+ auto vIt = PackageDefaultVersions_.find(package);
+ const ui32 version = (vIt != PackageDefaultVersions_.end()) ? vIt->second : 0;
+ auto it = Resources_.find(std::make_pair(package, version));
+ if (it == Resources_.end()) {
+ // todo: consider error?
+ continue;
+ }
+ target->RegisterResource(it->second, TUdfIndex::EOverrideMode::ReplaceWithNew);
+ }
+}
+
+TUdfIndexPackageSet::TPtr TUdfIndexPackageSet::Clone() const {
+ return new TUdfIndexPackageSet(KnownPackages_, PackageDefaultVersions_, Resources_);
+}
diff --git a/ydb/library/yql/core/yql_udf_index_package_set.h b/ydb/library/yql/core/yql_udf_index_package_set.h
index 4d39904795..71f59aa6eb 100644
--- a/ydb/library/yql/core/yql_udf_index_package_set.h
+++ b/ydb/library/yql/core/yql_udf_index_package_set.h
@@ -1,29 +1,29 @@
-#pragma once
-
-#include "yql_udf_index.h"
-
-namespace NYql {
-
-class TUdfIndexPackageSet : public TThrRefBase {
-public:
- typedef TIntrusivePtr<TUdfIndexPackageSet> TPtr;
-
-private:
- TUdfIndexPackageSet(const TSet<TString>& knownPackages, const THashMap<TString, ui32>& packageDefaultVersions, const TMap<std::pair<TString, ui32>, TResourceInfo::TPtr>& resources);
-
-public:
- TUdfIndexPackageSet();
- void RegisterPackage(const TString& package);
- bool SetPackageDefaultVersion(const TString& package, ui32 version);
- void RegisterResource(const TString& package, ui32 version, const TResourceInfo::TPtr& resource);
- bool AddResourceTo(const TString& package, ui32 version, const TUdfIndex::TPtr& target) const;
- void AddResourcesTo(const TUdfIndex::TPtr& target) const;
- TPtr Clone() const;
-
-private:
- TSet<TString> KnownPackages_;
- THashMap<TString, ui32> PackageDefaultVersions_;
- TMap<std::pair<TString, ui32>, TResourceInfo::TPtr> Resources_;
-};
-
-}
+#pragma once
+
+#include "yql_udf_index.h"
+
+namespace NYql {
+
+class TUdfIndexPackageSet : public TThrRefBase {
+public:
+ typedef TIntrusivePtr<TUdfIndexPackageSet> TPtr;
+
+private:
+ TUdfIndexPackageSet(const TSet<TString>& knownPackages, const THashMap<TString, ui32>& packageDefaultVersions, const TMap<std::pair<TString, ui32>, TResourceInfo::TPtr>& resources);
+
+public:
+ TUdfIndexPackageSet();
+ void RegisterPackage(const TString& package);
+ bool SetPackageDefaultVersion(const TString& package, ui32 version);
+ void RegisterResource(const TString& package, ui32 version, const TResourceInfo::TPtr& resource);
+ bool AddResourceTo(const TString& package, ui32 version, const TUdfIndex::TPtr& target) const;
+ void AddResourcesTo(const TUdfIndex::TPtr& target) const;
+ TPtr Clone() const;
+
+private:
+ TSet<TString> KnownPackages_;
+ THashMap<TString, ui32> PackageDefaultVersions_;
+ TMap<std::pair<TString, ui32>, TResourceInfo::TPtr> Resources_;
+};
+
+}
diff --git a/ydb/library/yql/core/yql_udf_resolver.cpp b/ydb/library/yql/core/yql_udf_resolver.cpp
index b4d29015cd..be12f11d35 100644
--- a/ydb/library/yql/core/yql_udf_resolver.cpp
+++ b/ydb/library/yql/core/yql_udf_resolver.cpp
@@ -1,33 +1,33 @@
-#include "yql_udf_resolver.h"
-
-namespace NYql {
-
-TResolveResult LoadRichMetadata(const IUdfResolver& resolver, const TVector<TUserDataBlock>& blocks) {
- TVector<IUdfResolver::TImport> imports;
- imports.reserve(blocks.size());
- std::transform(blocks.begin(), blocks.end(), std::back_inserter(imports), [](auto& b) {
- IUdfResolver::TImport import;
- import.Block = &b;
- // this field is not used later, but allows us to map importResult to import
- import.FileAlias = b.Data;
- return import;
- });
-
- return resolver.LoadRichMetadata(imports);
-}
-
-TResolveResult LoadRichMetadata(const IUdfResolver& resolver, const TVector<TString>& paths) {
- TVector<TUserDataBlock> blocks;
- blocks.reserve(paths.size());
- std::transform(paths.begin(), paths.end(), std::back_inserter(blocks), [](auto& p) {
- TUserDataBlock b;
- b.Type = EUserDataType::PATH;
- b.Data = p;
- b.Usage.Set(EUserDataBlockUsage::Udf);
- return b;
- });
-
- return LoadRichMetadata(resolver, blocks);
-}
-
-}
+#include "yql_udf_resolver.h"
+
+namespace NYql {
+
+TResolveResult LoadRichMetadata(const IUdfResolver& resolver, const TVector<TUserDataBlock>& blocks) {
+ TVector<IUdfResolver::TImport> imports;
+ imports.reserve(blocks.size());
+ std::transform(blocks.begin(), blocks.end(), std::back_inserter(imports), [](auto& b) {
+ IUdfResolver::TImport import;
+ import.Block = &b;
+ // this field is not used later, but allows us to map importResult to import
+ import.FileAlias = b.Data;
+ return import;
+ });
+
+ return resolver.LoadRichMetadata(imports);
+}
+
+TResolveResult LoadRichMetadata(const IUdfResolver& resolver, const TVector<TString>& paths) {
+ TVector<TUserDataBlock> blocks;
+ blocks.reserve(paths.size());
+ std::transform(paths.begin(), paths.end(), std::back_inserter(blocks), [](auto& p) {
+ TUserDataBlock b;
+ b.Type = EUserDataType::PATH;
+ b.Data = p;
+ b.Usage.Set(EUserDataBlockUsage::Udf);
+ return b;
+ });
+
+ return LoadRichMetadata(resolver, blocks);
+}
+
+}
diff --git a/ydb/library/yql/core/yql_udf_resolver.h b/ydb/library/yql/core/yql_udf_resolver.h
index 235987ecab..ab9e8e3adf 100644
--- a/ydb/library/yql/core/yql_udf_resolver.h
+++ b/ydb/library/yql/core/yql_udf_resolver.h
@@ -1,74 +1,74 @@
-#pragma once
-
-#include "yql_user_data.h"
+#pragma once
+
+#include "yql_user_data.h"
#include <ydb/library/yql/providers/common/proto/udf_resolver.pb.h>
-
+
#include <ydb/library/yql/public/issue/yql_issue.h>
-
-#include <util/generic/maybe.h>
-#include <util/generic/vector.h>
-
-namespace NYql {
-
-class TTypeAnnotationNode;
-struct TUserDataBlock;
-struct TExprContext;
-
-struct TFilePathWithMd5 {
- TString Path;
- TString Md5;
-
- explicit TFilePathWithMd5(const TString& path = "", const TString& md5 = "")
- : Path(path)
- , Md5(md5)
- {
- }
-
- TFilePathWithMd5& operator=(const TFilePathWithMd5& other) = default;
-};
-
-class IUdfResolver : public TThrRefBase {
-public:
- using TPtr = TIntrusiveConstPtr<IUdfResolver>;
-
- virtual ~IUdfResolver() = default;
-
- struct TFunction {
- // input
- TPosition Pos;
- TString Name;
- TString TypeConfig;
- const TTypeAnnotationNode* UserType = nullptr;
+
+#include <util/generic/maybe.h>
+#include <util/generic/vector.h>
+
+namespace NYql {
+
+class TTypeAnnotationNode;
+struct TUserDataBlock;
+struct TExprContext;
+
+struct TFilePathWithMd5 {
+ TString Path;
+ TString Md5;
+
+ explicit TFilePathWithMd5(const TString& path = "", const TString& md5 = "")
+ : Path(path)
+ , Md5(md5)
+ {
+ }
+
+ TFilePathWithMd5& operator=(const TFilePathWithMd5& other) = default;
+};
+
+class IUdfResolver : public TThrRefBase {
+public:
+ using TPtr = TIntrusiveConstPtr<IUdfResolver>;
+
+ virtual ~IUdfResolver() = default;
+
+ struct TFunction {
+ // input
+ TPosition Pos;
+ TString Name;
+ TString TypeConfig;
+ const TTypeAnnotationNode* UserType = nullptr;
THashMap<TString, TString> SecureParams;
-
- // output
- const TTypeAnnotationNode* NormalizedUserType = nullptr;
- const TTypeAnnotationNode* RunConfigType = nullptr;
- const TTypeAnnotationNode* CallableType = nullptr;
- };
-
- struct TImport {
- // input
- TPosition Pos;
- TString FileAlias;
- const TUserDataBlock* Block = nullptr;
-
- // output
- TMaybe<TVector<TString>> Modules;
- };
-
- /*
- Returns nothing if module is not a system one
- Always returns frozen path
- */
- virtual TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const = 0;
- virtual bool LoadMetadata(const TVector<TImport*>& imports,
- const TVector<TFunction*>& functions, TExprContext& ctx) const = 0;
-
- virtual TResolveResult LoadRichMetadata(const TVector<TImport>& imports) const = 0;
-};
-
-TResolveResult LoadRichMetadata(const IUdfResolver& resolver, const TVector<TUserDataBlock>& blocks);
-TResolveResult LoadRichMetadata(const IUdfResolver& resolver, const TVector<TString>& paths);
-
-}
+
+ // output
+ const TTypeAnnotationNode* NormalizedUserType = nullptr;
+ const TTypeAnnotationNode* RunConfigType = nullptr;
+ const TTypeAnnotationNode* CallableType = nullptr;
+ };
+
+ struct TImport {
+ // input
+ TPosition Pos;
+ TString FileAlias;
+ const TUserDataBlock* Block = nullptr;
+
+ // output
+ TMaybe<TVector<TString>> Modules;
+ };
+
+ /*
+ Returns nothing if module is not a system one
+ Always returns frozen path
+ */
+ virtual TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const = 0;
+ virtual bool LoadMetadata(const TVector<TImport*>& imports,
+ const TVector<TFunction*>& functions, TExprContext& ctx) const = 0;
+
+ virtual TResolveResult LoadRichMetadata(const TVector<TImport>& imports) const = 0;
+};
+
+TResolveResult LoadRichMetadata(const IUdfResolver& resolver, const TVector<TUserDataBlock>& blocks);
+TResolveResult LoadRichMetadata(const IUdfResolver& resolver, const TVector<TString>& paths);
+
+}
diff --git a/ydb/library/yql/core/yql_user_data.cpp b/ydb/library/yql/core/yql_user_data.cpp
index 5640a10f15..05762596a1 100644
--- a/ydb/library/yql/core/yql_user_data.cpp
+++ b/ydb/library/yql/core/yql_user_data.cpp
@@ -1 +1 @@
-#include "yql_user_data.h"
+#include "yql_user_data.h"
diff --git a/ydb/library/yql/core/yql_user_data.h b/ydb/library/yql/core/yql_user_data.h
index fadc8f79cf..29e89f4884 100644
--- a/ydb/library/yql/core/yql_user_data.h
+++ b/ydb/library/yql/core/yql_user_data.h
@@ -1,103 +1,103 @@
-#pragma once
-
+#pragma once
+
#include <library/cpp/enumbitset/enumbitset.h>
-
+
#include <ydb/library/yql/core/file_storage/file_storage.h>
-
-#include <util/generic/hash.h>
-#include <util/generic/hash_set.h>
-
-namespace NYql {
-
-// -- user files --
-
-enum class EUserDataType {
- URL = 1, // indicates that provided user data represents URL which can be used to obtain table data
- PATH = 2, // indicates that provided user data represents file path which can be used to obtain table data
- RAW_INLINE_DATA = 3, // table data is inside the provided data block
-};
-
-enum class EUserDataBlockUsage {
- Begin,
- Path = Begin,
- Content,
- Udf,
- Library,
- End,
-};
-typedef TEnumBitSet<EUserDataBlockUsage, static_cast<int>(EUserDataBlockUsage::Begin),
- static_cast<int>(EUserDataBlockUsage::End)> TUserDataBlockUsage;
-
-struct TUserDataBlock {
- EUserDataType Type = EUserDataType::PATH;
- TString UrlToken;
- TString Data;
- TUserDataBlockUsage Usage;
-
- TFileLinkPtr FrozenFile;
-};
-
-class TUserDataKey {
-public:
- enum class EDataType {
- FILE, UDF
- };
-
- static TUserDataKey File(const TString& alias) {
- return { EDataType::FILE, alias };
- }
-
- static TUserDataKey File(const TStringBuf& alias) {
- return { EDataType::FILE, TString(alias) };
- }
-
- static TUserDataKey Udf(const TString& alias) {
- return { EDataType::UDF, alias };
- }
-
- static TUserDataKey Udf(const TStringBuf& alias) {
- return { EDataType::UDF, TString(alias) };
- }
-
- inline bool IsFile() const { return Type_ == EDataType::FILE; }
- inline bool IsUdf() const { return Type_ == EDataType::UDF; }
- inline const TString& Alias() const { return Alias_; }
- inline EDataType Type() const { return Type_; }
-
- bool operator<(const TUserDataKey& other) const {
- return std::tie(Type_, Alias_) < std::tie(other.Type_, other.Alias_);
- }
-
- struct THash {
- size_t operator()(const TUserDataKey& key) {
- auto type = static_cast<size_t>(key.Type_);
+
+#include <util/generic/hash.h>
+#include <util/generic/hash_set.h>
+
+namespace NYql {
+
+// -- user files --
+
+enum class EUserDataType {
+ URL = 1, // indicates that provided user data represents URL which can be used to obtain table data
+ PATH = 2, // indicates that provided user data represents file path which can be used to obtain table data
+ RAW_INLINE_DATA = 3, // table data is inside the provided data block
+};
+
+enum class EUserDataBlockUsage {
+ Begin,
+ Path = Begin,
+ Content,
+ Udf,
+ Library,
+ End,
+};
+typedef TEnumBitSet<EUserDataBlockUsage, static_cast<int>(EUserDataBlockUsage::Begin),
+ static_cast<int>(EUserDataBlockUsage::End)> TUserDataBlockUsage;
+
+struct TUserDataBlock {
+ EUserDataType Type = EUserDataType::PATH;
+ TString UrlToken;
+ TString Data;
+ TUserDataBlockUsage Usage;
+
+ TFileLinkPtr FrozenFile;
+};
+
+class TUserDataKey {
+public:
+ enum class EDataType {
+ FILE, UDF
+ };
+
+ static TUserDataKey File(const TString& alias) {
+ return { EDataType::FILE, alias };
+ }
+
+ static TUserDataKey File(const TStringBuf& alias) {
+ return { EDataType::FILE, TString(alias) };
+ }
+
+ static TUserDataKey Udf(const TString& alias) {
+ return { EDataType::UDF, alias };
+ }
+
+ static TUserDataKey Udf(const TStringBuf& alias) {
+ return { EDataType::UDF, TString(alias) };
+ }
+
+ inline bool IsFile() const { return Type_ == EDataType::FILE; }
+ inline bool IsUdf() const { return Type_ == EDataType::UDF; }
+ inline const TString& Alias() const { return Alias_; }
+ inline EDataType Type() const { return Type_; }
+
+ bool operator<(const TUserDataKey& other) const {
+ return std::tie(Type_, Alias_) < std::tie(other.Type_, other.Alias_);
+ }
+
+ struct THash {
+ size_t operator()(const TUserDataKey& key) {
+ auto type = static_cast<size_t>(key.Type_);
return CombineHashes(type, ComputeHash(key.Alias_));
- }
- };
-
- struct TEqualTo {
- bool operator()(const TUserDataKey& k1, const TUserDataKey& k2) const {
- return k1.Type_ == k2.Type_ && k1.Alias_ == k2.Alias_;
- }
- };
-
-private:
- inline TUserDataKey(EDataType type, TString alias)
- : Type_(type)
- , Alias_(std::move(alias))
- {
- }
-
-private:
- const EDataType Type_;
- const TString Alias_;
-};
-
-inline IOutputStream& operator<<(IOutputStream& os, const TUserDataKey& key) {
- os << "Type: " << key.Type() << ", alias: " << key.Alias();
- return os;
-}
-
-using TUserDataTable = THashMap<TUserDataKey, TUserDataBlock, TUserDataKey::THash, TUserDataKey::TEqualTo>;
-
-} // namespace NYql
+ }
+ };
+
+ struct TEqualTo {
+ bool operator()(const TUserDataKey& k1, const TUserDataKey& k2) const {
+ return k1.Type_ == k2.Type_ && k1.Alias_ == k2.Alias_;
+ }
+ };
+
+private:
+ inline TUserDataKey(EDataType type, TString alias)
+ : Type_(type)
+ , Alias_(std::move(alias))
+ {
+ }
+
+private:
+ const EDataType Type_;
+ const TString Alias_;
+};
+
+inline IOutputStream& operator<<(IOutputStream& os, const TUserDataKey& key) {
+ os << "Type: " << key.Type() << ", alias: " << key.Alias();
+ return os;
+}
+
+using TUserDataTable = THashMap<TUserDataKey, TUserDataBlock, TUserDataKey::THash, TUserDataKey::TEqualTo>;
+
+} // namespace NYql
diff --git a/ydb/library/yql/core/yql_user_data_storage.cpp b/ydb/library/yql/core/yql_user_data_storage.cpp
index 1a9d725d27..a01b1ef42f 100644
--- a/ydb/library/yql/core/yql_user_data_storage.cpp
+++ b/ydb/library/yql/core/yql_user_data_storage.cpp
@@ -1,127 +1,127 @@
-#include "yql_user_data_storage.h"
-
+#include "yql_user_data_storage.h"
+
#include <ydb/library/yql/utils/log/profile.h>
-
+
#include <ydb/library/yql/utils/future_action.h>
-
-#include <util/folder/iterator.h>
-#include <util/string/builder.h>
-#include <util/string/strip.h>
-#include <util/system/fs.h>
-#include <util/system/fstat.h>
-#include <util/system/file.h>
-
-namespace {
-const auto Sep = '/';
-const TString Root(1, Sep);
-const TString Home = "home";
-const TString HomePath = Root + Home + Sep;
-
-template <typename DataMapType, typename F>
-void EnumFolderContent(DataMapType& data, const TString& folderPath, ui32 maxFileCount, F&& f) {
- ui32 count = 0;
- for (auto& p : data) {
- if (!p.first.IsFile() || !p.first.Alias().StartsWith(folderPath)) {
- continue;
- }
-
- f(p.first, p.second);
-
- if (count++ >= maxFileCount) {
- break;
- }
- }
-}
-
-}
-
-namespace NYql {
-
-TUserDataStorage::TUserDataStorage(TFileStoragePtr fileStorage, TUserDataTable data, IUdfResolver::TPtr udfResolver, TUdfIndex::TPtr udfIndex)
- : FileStorage_(std::move(fileStorage))
- , UserData_(std::move(data))
- , UdfResolver(std::move(udfResolver))
- , UdfIndex(std::move(udfIndex))
-{
-}
-
-void TUserDataStorage::SetTokenResolver(TTokenResolver tokenResolver) {
- TokenResolver_ = std::move(tokenResolver);
-}
-
-void TUserDataStorage::AddUserDataBlock(const TStringBuf& name, const TUserDataBlock& block) {
- const auto key = ComposeUserDataKey(name);
- AddUserDataBlock(key, block);
-}
-
-void TUserDataStorage::AddUserDataBlock(const TUserDataKey& key, const TUserDataBlock& block) {
- if (!UserData_.emplace(key, block).second) {
- throw yexception() << "Failed to add user data block, key " << key << " already registered";
- }
-}
-
-bool TUserDataStorage::ContainsUserDataBlock(const TStringBuf& name) const {
- const auto key = ComposeUserDataKey(name);
- return ContainsUserDataBlock(key);
-}
-
-bool TUserDataStorage::ContainsUserDataBlock(const TUserDataKey& key) const {
+
+#include <util/folder/iterator.h>
+#include <util/string/builder.h>
+#include <util/string/strip.h>
+#include <util/system/fs.h>
+#include <util/system/fstat.h>
+#include <util/system/file.h>
+
+namespace {
+const auto Sep = '/';
+const TString Root(1, Sep);
+const TString Home = "home";
+const TString HomePath = Root + Home + Sep;
+
+template <typename DataMapType, typename F>
+void EnumFolderContent(DataMapType& data, const TString& folderPath, ui32 maxFileCount, F&& f) {
+ ui32 count = 0;
+ for (auto& p : data) {
+ if (!p.first.IsFile() || !p.first.Alias().StartsWith(folderPath)) {
+ continue;
+ }
+
+ f(p.first, p.second);
+
+ if (count++ >= maxFileCount) {
+ break;
+ }
+ }
+}
+
+}
+
+namespace NYql {
+
+TUserDataStorage::TUserDataStorage(TFileStoragePtr fileStorage, TUserDataTable data, IUdfResolver::TPtr udfResolver, TUdfIndex::TPtr udfIndex)
+ : FileStorage_(std::move(fileStorage))
+ , UserData_(std::move(data))
+ , UdfResolver(std::move(udfResolver))
+ , UdfIndex(std::move(udfIndex))
+{
+}
+
+void TUserDataStorage::SetTokenResolver(TTokenResolver tokenResolver) {
+ TokenResolver_ = std::move(tokenResolver);
+}
+
+void TUserDataStorage::AddUserDataBlock(const TStringBuf& name, const TUserDataBlock& block) {
+ const auto key = ComposeUserDataKey(name);
+ AddUserDataBlock(key, block);
+}
+
+void TUserDataStorage::AddUserDataBlock(const TUserDataKey& key, const TUserDataBlock& block) {
+ if (!UserData_.emplace(key, block).second) {
+ throw yexception() << "Failed to add user data block, key " << key << " already registered";
+ }
+}
+
+bool TUserDataStorage::ContainsUserDataBlock(const TStringBuf& name) const {
+ const auto key = ComposeUserDataKey(name);
+ return ContainsUserDataBlock(key);
+}
+
+bool TUserDataStorage::ContainsUserDataBlock(const TUserDataKey& key) const {
return UserData_.contains(key);
-}
-
-const TUserDataBlock& TUserDataStorage::GetUserDataBlock(const TUserDataKey& key) const {
- auto block = FindUserDataBlock(key);
- if (!block) {
- ythrow yexception() << "Failed to find user data block by key " << key;
- }
-
- return *block;
-}
-
-const TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TStringBuf& name) const {
- const auto key = ComposeUserDataKey(name);
- return FindUserDataBlock(key);
-}
-
-const TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TUserDataKey& key) const {
- return FindUserDataBlock(UserData_, key);
-}
-
-TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TUserDataKey& key) {
- return FindUserDataBlock(UserData_, key);
-}
-
-const TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TUserDataTable& userData, const TStringBuf& name) {
- const auto key = ComposeUserDataKey(name);
- return FindUserDataBlock(userData, key);
-}
-
-const TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TUserDataTable& userData, const TUserDataKey& key) {
- return userData.FindPtr(key);
-}
-
-TUserDataBlock* TUserDataStorage::FindUserDataBlock(TUserDataTable& userData, const TStringBuf& name) {
- const auto key = ComposeUserDataKey(name);
- return FindUserDataBlock(userData, key);
-}
-
-TUserDataBlock* TUserDataStorage::FindUserDataBlock(TUserDataTable& userData, const TUserDataKey& key) {
- return userData.FindPtr(key);
-}
-
-TString TUserDataStorage::MakeFullName(const TStringBuf& name) {
- return name.StartsWith(Sep) ? TString(name) : HomePath + name;
-}
-
-TString TUserDataStorage::MakeFolderName(const TStringBuf& name) {
- auto fullName = MakeFullName(name);
- if (!fullName.EndsWith(Sep)) {
- fullName += Sep;
- }
-
- return fullName;
-}
-
+}
+
+const TUserDataBlock& TUserDataStorage::GetUserDataBlock(const TUserDataKey& key) const {
+ auto block = FindUserDataBlock(key);
+ if (!block) {
+ ythrow yexception() << "Failed to find user data block by key " << key;
+ }
+
+ return *block;
+}
+
+const TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TStringBuf& name) const {
+ const auto key = ComposeUserDataKey(name);
+ return FindUserDataBlock(key);
+}
+
+const TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TUserDataKey& key) const {
+ return FindUserDataBlock(UserData_, key);
+}
+
+TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TUserDataKey& key) {
+ return FindUserDataBlock(UserData_, key);
+}
+
+const TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TUserDataTable& userData, const TStringBuf& name) {
+ const auto key = ComposeUserDataKey(name);
+ return FindUserDataBlock(userData, key);
+}
+
+const TUserDataBlock* TUserDataStorage::FindUserDataBlock(const TUserDataTable& userData, const TUserDataKey& key) {
+ return userData.FindPtr(key);
+}
+
+TUserDataBlock* TUserDataStorage::FindUserDataBlock(TUserDataTable& userData, const TStringBuf& name) {
+ const auto key = ComposeUserDataKey(name);
+ return FindUserDataBlock(userData, key);
+}
+
+TUserDataBlock* TUserDataStorage::FindUserDataBlock(TUserDataTable& userData, const TUserDataKey& key) {
+ return userData.FindPtr(key);
+}
+
+TString TUserDataStorage::MakeFullName(const TStringBuf& name) {
+ return name.StartsWith(Sep) ? TString(name) : HomePath + name;
+}
+
+TString TUserDataStorage::MakeFolderName(const TStringBuf& name) {
+ auto fullName = MakeFullName(name);
+ if (!fullName.EndsWith(Sep)) {
+ fullName += Sep;
+ }
+
+ return fullName;
+}
+
TString TUserDataStorage::MakeRelativeName(const TStringBuf& name) {
if (name.StartsWith(HomePath)) {
return TString(name.substr(HomePath.size()));
@@ -129,245 +129,245 @@ TString TUserDataStorage::MakeRelativeName(const TStringBuf& name) {
return name.StartsWith(Sep) ? TString(name.substr(1)) : TString(name);
}
-TUserDataKey TUserDataStorage::ComposeUserDataKey(const TStringBuf& name) {
- auto fullName = MakeFullName(name);
- return TUserDataKey::File(fullName);
-}
-
-bool TUserDataStorage::ContainsUserDataFolder(const TStringBuf& name) const {
- return FindUserDataFolder(name, 1).Defined();
-}
-
-TMaybe<std::map<TUserDataKey, const TUserDataBlock*>> TUserDataStorage::FindUserDataFolder(const TStringBuf& name, ui32 maxFileCount) const {
+TUserDataKey TUserDataStorage::ComposeUserDataKey(const TStringBuf& name) {
+ auto fullName = MakeFullName(name);
+ return TUserDataKey::File(fullName);
+}
+
+bool TUserDataStorage::ContainsUserDataFolder(const TStringBuf& name) const {
+ return FindUserDataFolder(name, 1).Defined();
+}
+
+TMaybe<std::map<TUserDataKey, const TUserDataBlock*>> TUserDataStorage::FindUserDataFolder(const TStringBuf& name, ui32 maxFileCount) const {
return FindUserDataFolder(UserData_,name,maxFileCount);
}
TMaybe<std::map<TUserDataKey, const TUserDataBlock*>> TUserDataStorage::FindUserDataFolder(const TUserDataTable& userData, const TStringBuf& name, ui32 maxFileCount) {
- auto fullName = MakeFolderName(name);
- TMaybe<std::map<TUserDataKey, const TUserDataBlock*>> res;
+ auto fullName = MakeFolderName(name);
+ TMaybe<std::map<TUserDataKey, const TUserDataBlock*>> res;
EnumFolderContent(userData, fullName, maxFileCount, [&](auto& key, auto& block) {
- if (!res) {
- res.ConstructInPlace();
- }
-
- res->emplace(key, &block);
- });
-
- return res;
-}
-
-void TUserDataStorage::FillUserDataTokens() {
- for (auto& p : UserData_) {
- TryFillUserDataToken(p.second);
- }
-}
-
-void TUserDataStorage::TryFillUserDataToken(TUserDataBlock& block) const {
- if (block.Type != EUserDataType::URL) {
- return;
- }
-
- // no need to overwrite existing value
- if (block.UrlToken) {
- return;
- }
-
- if (!TokenResolver_) {
- return;
- }
-
- block.UrlToken = TokenResolver_(block.Data).GetOrElse({});
-}
-
-std::map<TString, const TUserDataBlock*> TUserDataStorage::GetDirectoryContent(const TStringBuf& path, ui32 maxFileCount) const {
- const auto fullPath = MakeFolderName(path);
-
- std::map<TString, const TUserDataBlock*> result;
- EnumFolderContent(UserData_, fullPath, maxFileCount, [&](auto& key, auto& block) {
- const auto name = key.Alias().substr(fullPath.size());
- const auto pos = name.find(Sep);
- if (TString::npos == pos)
- result.emplace(name, &block);
- else
- result.emplace(name.substr(0U, pos), nullptr);
- });
-
- return result;
-}
-
-const TUserDataBlock& TUserDataStorage::Freeze(const TUserDataKey& key) {
- const TUserDataBlock& block = GetUserDataBlock(key);
- if (block.FrozenFile) {
- return block;
- }
-
- // do it outside of the lock
- auto link = FileStorage_.FreezeFile(block);
- return RegisterLink(key, link);
-}
-
-const TUserDataBlock* TUserDataStorage::FreezeNoThrow(const TUserDataKey& key, TString& errorMessage) {
- try {
- return &Freeze(key);
- } catch (const std::exception& e) {
- errorMessage = TStringBuilder() << "Failed to freeze file with key " << key << ", details: " << e.what();
- return nullptr;
- }
-}
-
-const TUserDataBlock* TUserDataStorage::FreezeUdfNoThrow(const TUserDataKey& key, TString& errorMessage) {
- const TUserDataBlock* block = FreezeNoThrow(key, errorMessage);
- if (!block) {
- return nullptr;
- }
-
- if (!ScannedUdfs.insert(key).second) {
- // already scanned
- return block;
- }
-
- if (!UdfIndex) {
- return block;
- }
-
- try {
- TString scope = "ScanUdfStrategy " + key.Alias();
- YQL_PROFILE_SCOPE(DEBUG, scope.c_str());
- Y_ENSURE(UdfResolver);
- Y_ENSURE(UdfIndex);
- LoadRichMetadataToUdfIndex(*UdfResolver, *block, TUdfIndex::EOverrideMode::ReplaceWithNew, *UdfIndex);
- } catch (const std::exception& e) {
- errorMessage = TStringBuilder() << "Failed to scan udf with key " << key << ", details: " << e.what();
- return nullptr;
- }
-
- return block;
-}
-
-NThreading::TFuture<std::function<TUserDataBlock()>> TUserDataStorage::FreezeAsync(const TUserDataKey& key) {
- auto block = GetUserDataBlock(key);
- if (block.FrozenFile) {
- return MakeFutureWithConstantAction(block);
- }
-
- return MapFutureAction(FileStorage_.FreezeFileAsync(block), [this, key](TFileLinkPtr link) {
- return this->RegisterLink(key, link);
- });
-}
-
-TUserDataBlock& TUserDataStorage::RegisterLink(const TUserDataKey& key, TFileLinkPtr link) {
- auto block = FindUserDataBlock(key);
- Y_ENSURE(block);
-
- if (!block->FrozenFile) {
- block->FrozenFile = link;
- }
- return *block;
-}
-
-const TString& GetDefaultFilePrefix() {
- return HomePath;
-}
-
-void FillUserDataTableFromFileSystem(const TString& aliasPrefix, const TString& path, bool isLibrary, TUserDataTable& userData) {
- if (!NFs::Exists(path) || !TFileStat(path).IsDir()) {
- return;
- }
-
- TDirIterator dir(path);
-
+ if (!res) {
+ res.ConstructInPlace();
+ }
+
+ res->emplace(key, &block);
+ });
+
+ return res;
+}
+
+void TUserDataStorage::FillUserDataTokens() {
+ for (auto& p : UserData_) {
+ TryFillUserDataToken(p.second);
+ }
+}
+
+void TUserDataStorage::TryFillUserDataToken(TUserDataBlock& block) const {
+ if (block.Type != EUserDataType::URL) {
+ return;
+ }
+
+ // no need to overwrite existing value
+ if (block.UrlToken) {
+ return;
+ }
+
+ if (!TokenResolver_) {
+ return;
+ }
+
+ block.UrlToken = TokenResolver_(block.Data).GetOrElse({});
+}
+
+std::map<TString, const TUserDataBlock*> TUserDataStorage::GetDirectoryContent(const TStringBuf& path, ui32 maxFileCount) const {
+ const auto fullPath = MakeFolderName(path);
+
+ std::map<TString, const TUserDataBlock*> result;
+ EnumFolderContent(UserData_, fullPath, maxFileCount, [&](auto& key, auto& block) {
+ const auto name = key.Alias().substr(fullPath.size());
+ const auto pos = name.find(Sep);
+ if (TString::npos == pos)
+ result.emplace(name, &block);
+ else
+ result.emplace(name.substr(0U, pos), nullptr);
+ });
+
+ return result;
+}
+
+const TUserDataBlock& TUserDataStorage::Freeze(const TUserDataKey& key) {
+ const TUserDataBlock& block = GetUserDataBlock(key);
+ if (block.FrozenFile) {
+ return block;
+ }
+
+ // do it outside of the lock
+ auto link = FileStorage_.FreezeFile(block);
+ return RegisterLink(key, link);
+}
+
+const TUserDataBlock* TUserDataStorage::FreezeNoThrow(const TUserDataKey& key, TString& errorMessage) {
+ try {
+ return &Freeze(key);
+ } catch (const std::exception& e) {
+ errorMessage = TStringBuilder() << "Failed to freeze file with key " << key << ", details: " << e.what();
+ return nullptr;
+ }
+}
+
+const TUserDataBlock* TUserDataStorage::FreezeUdfNoThrow(const TUserDataKey& key, TString& errorMessage) {
+ const TUserDataBlock* block = FreezeNoThrow(key, errorMessage);
+ if (!block) {
+ return nullptr;
+ }
+
+ if (!ScannedUdfs.insert(key).second) {
+ // already scanned
+ return block;
+ }
+
+ if (!UdfIndex) {
+ return block;
+ }
+
+ try {
+ TString scope = "ScanUdfStrategy " + key.Alias();
+ YQL_PROFILE_SCOPE(DEBUG, scope.c_str());
+ Y_ENSURE(UdfResolver);
+ Y_ENSURE(UdfIndex);
+ LoadRichMetadataToUdfIndex(*UdfResolver, *block, TUdfIndex::EOverrideMode::ReplaceWithNew, *UdfIndex);
+ } catch (const std::exception& e) {
+ errorMessage = TStringBuilder() << "Failed to scan udf with key " << key << ", details: " << e.what();
+ return nullptr;
+ }
+
+ return block;
+}
+
+NThreading::TFuture<std::function<TUserDataBlock()>> TUserDataStorage::FreezeAsync(const TUserDataKey& key) {
+ auto block = GetUserDataBlock(key);
+ if (block.FrozenFile) {
+ return MakeFutureWithConstantAction(block);
+ }
+
+ return MapFutureAction(FileStorage_.FreezeFileAsync(block), [this, key](TFileLinkPtr link) {
+ return this->RegisterLink(key, link);
+ });
+}
+
+TUserDataBlock& TUserDataStorage::RegisterLink(const TUserDataKey& key, TFileLinkPtr link) {
+ auto block = FindUserDataBlock(key);
+ Y_ENSURE(block);
+
+ if (!block->FrozenFile) {
+ block->FrozenFile = link;
+ }
+ return *block;
+}
+
+const TString& GetDefaultFilePrefix() {
+ return HomePath;
+}
+
+void FillUserDataTableFromFileSystem(const TString& aliasPrefix, const TString& path, bool isLibrary, TUserDataTable& userData) {
+ if (!NFs::Exists(path) || !TFileStat(path).IsDir()) {
+ return;
+ }
+
+ TDirIterator dir(path);
+
for (auto it = dir.begin(); it != dir.end(); ++it) {
- if (FTS_F == it->fts_info) {
- TString filePath = it->fts_path;
+ if (FTS_F == it->fts_info) {
+ TString filePath = it->fts_path;
if (!filePath.empty()) {
- auto ptr = &*filePath.begin();
+ auto ptr = &*filePath.begin();
for (size_t i = 0; i < filePath.size(); ++i) {
- if (ptr[i] == '\\') {
- ptr[i] = Sep;
- }
- }
- }
-
- const TString alias = aliasPrefix + filePath.substr(path.size());
-
- if (filePath.EndsWith(".url")) {
- TFile file(filePath, EOpenModeFlag::RdOnly);
- if (file.GetLength() > 0) {
- auto& entry = userData[TUserDataKey::File(alias)];
- entry.Type = EUserDataType::URL;
- entry.Usage.Set(EUserDataBlockUsage::Library, isLibrary);
- std::vector<TString::value_type> buffer(file.GetLength());
- file.Load(buffer.data(), buffer.size());
- entry.Data = StripStringRight(TString(buffer.data(), buffer.size()));
- }
- } else {
- auto& entry = userData[TUserDataKey::File(alias)];
- entry.Usage.Set(EUserDataBlockUsage::Library, isLibrary);
- entry.Type = EUserDataType::PATH;
- entry.Data = filePath;
- }
- }
- }
-}
-
-void FillUserDataTableFromFileSystem(const NYqlMountConfig::TMountConfig& mount, TUserDataTable& userData) {
- for (const auto& mp : mount.GetMountPoints()) {
- FillUserDataTableFromFileSystem(mp.GetRootAlias(), mp.GetMountPoint(), mp.GetLibrary(), userData);
- }
-}
-
-NThreading::TFuture<std::function<TUserDataTable()>> FreezeUserDataTableIfNeeded(TUserDataStorage::TPtr userDataStorage, const TUserDataTable& files, const std::function<bool(const TString&)>& urlDownloadFilter) {
- if (files.empty()) {
- return MakeFutureWithConstantAction(TUserDataTable());
- }
-
- TVector<TUserDataKey> keysForDownloading;
- for (auto& p : files) {
- if (p.second.FrozenFile) {
- continue;
- }
-
- if (p.second.Type != EUserDataType::URL || urlDownloadFilter(p.second.Data)) {
- keysForDownloading.push_back(p.first);
- }
- }
-
- // fast exit
- if (keysForDownloading.empty()) {
- return MakeFutureWithConstantAction(files);
- }
-
- TVector<NThreading::TFuture<std::function<std::pair<TUserDataKey, TUserDataBlock>()>>> futures;
- TVector<NThreading::TFuture<void>> voidFutures;
- futures.reserve(keysForDownloading.size());
- voidFutures.reserve(keysForDownloading.size());
- for (auto& k : keysForDownloading) {
- auto f = MapFutureAction(userDataStorage->FreezeAsync(k), [k](const TUserDataBlock& block) {
- return std::make_pair(k, block);
- });
-
- futures.push_back(f);
- voidFutures.push_back(f.IgnoreResult());
- }
-
+ if (ptr[i] == '\\') {
+ ptr[i] = Sep;
+ }
+ }
+ }
+
+ const TString alias = aliasPrefix + filePath.substr(path.size());
+
+ if (filePath.EndsWith(".url")) {
+ TFile file(filePath, EOpenModeFlag::RdOnly);
+ if (file.GetLength() > 0) {
+ auto& entry = userData[TUserDataKey::File(alias)];
+ entry.Type = EUserDataType::URL;
+ entry.Usage.Set(EUserDataBlockUsage::Library, isLibrary);
+ std::vector<TString::value_type> buffer(file.GetLength());
+ file.Load(buffer.data(), buffer.size());
+ entry.Data = StripStringRight(TString(buffer.data(), buffer.size()));
+ }
+ } else {
+ auto& entry = userData[TUserDataKey::File(alias)];
+ entry.Usage.Set(EUserDataBlockUsage::Library, isLibrary);
+ entry.Type = EUserDataType::PATH;
+ entry.Data = filePath;
+ }
+ }
+ }
+}
+
+void FillUserDataTableFromFileSystem(const NYqlMountConfig::TMountConfig& mount, TUserDataTable& userData) {
+ for (const auto& mp : mount.GetMountPoints()) {
+ FillUserDataTableFromFileSystem(mp.GetRootAlias(), mp.GetMountPoint(), mp.GetLibrary(), userData);
+ }
+}
+
+NThreading::TFuture<std::function<TUserDataTable()>> FreezeUserDataTableIfNeeded(TUserDataStorage::TPtr userDataStorage, const TUserDataTable& files, const std::function<bool(const TString&)>& urlDownloadFilter) {
+ if (files.empty()) {
+ return MakeFutureWithConstantAction(TUserDataTable());
+ }
+
+ TVector<TUserDataKey> keysForDownloading;
+ for (auto& p : files) {
+ if (p.second.FrozenFile) {
+ continue;
+ }
+
+ if (p.second.Type != EUserDataType::URL || urlDownloadFilter(p.second.Data)) {
+ keysForDownloading.push_back(p.first);
+ }
+ }
+
+ // fast exit
+ if (keysForDownloading.empty()) {
+ return MakeFutureWithConstantAction(files);
+ }
+
+ TVector<NThreading::TFuture<std::function<std::pair<TUserDataKey, TUserDataBlock>()>>> futures;
+ TVector<NThreading::TFuture<void>> voidFutures;
+ futures.reserve(keysForDownloading.size());
+ voidFutures.reserve(keysForDownloading.size());
+ for (auto& k : keysForDownloading) {
+ auto f = MapFutureAction(userDataStorage->FreezeAsync(k), [k](const TUserDataBlock& block) {
+ return std::make_pair(k, block);
+ });
+
+ futures.push_back(f);
+ voidFutures.push_back(f.IgnoreResult());
+ }
+
return NThreading::WaitExceptionOrAll(voidFutures).Apply([files = files, futures = std::move(futures)](NThreading::TFuture<void> f) mutable {
- std::function<TUserDataTable()> result = [f, files, futures]() mutable {
- // rethrow exception if any
- f.GetValue();
-
- for (auto func : futures) {
- std::pair<TUserDataKey, TUserDataBlock> p = func.GetValue()();
+ std::function<TUserDataTable()> result = [f, files, futures]() mutable {
+ // rethrow exception if any
+ f.GetValue();
+
+ for (auto func : futures) {
+ std::pair<TUserDataKey, TUserDataBlock> p = func.GetValue()();
Y_ENSURE(files.contains(p.first));
- files[p.first].FrozenFile = p.second.FrozenFile;
- }
-
- return files;
- };
-
- return result;
- });
-}
-
+ files[p.first].FrozenFile = p.second.FrozenFile;
+ }
+
+ return files;
+ };
+
+ return result;
+ });
+}
+
TVector<TString> TUserDataStorage::GetLibraries() const {
TVector<TString> result;
for (const auto& x : UserData_) {
@@ -378,6 +378,6 @@ TVector<TString> TUserDataStorage::GetLibraries() const {
}
return result;
-}
+}
}
diff --git a/ydb/library/yql/core/yql_user_data_storage.h b/ydb/library/yql/core/yql_user_data_storage.h
index f1575cfffe..813e6e5ff0 100644
--- a/ydb/library/yql/core/yql_user_data_storage.h
+++ b/ydb/library/yql/core/yql_user_data_storage.h
@@ -1,92 +1,92 @@
-#pragma once
-
-#include "yql_holding_file_storage.h"
-#include "yql_udf_index.h"
-#include "yql_udf_resolver.h"
-#include "yql_user_data.h"
-
+#pragma once
+
+#include "yql_holding_file_storage.h"
+#include "yql_udf_index.h"
+#include "yql_udf_resolver.h"
+#include "yql_user_data.h"
+
#include <ydb/library/yql/protos/yql_mount.pb.h>
-
-#include <util/generic/maybe.h>
-
-namespace NYql {
-
-class TUserDataStorage : public TThrRefBase {
-public:
- typedef TIntrusivePtr<TUserDataStorage> TPtr;
- typedef std::function<TMaybe<TString>(const TString& url)> TTokenResolver;
-
-public:
- TUserDataStorage(TFileStoragePtr fileStorage, TUserDataTable data, IUdfResolver::TPtr udfResolver, TUdfIndex::TPtr udfIndex);
- void SetTokenResolver(TTokenResolver tokenResolver);
-
- void AddUserDataBlock(const TStringBuf& name, const TUserDataBlock& block);
- void AddUserDataBlock(const TUserDataKey& key, const TUserDataBlock& block);
-
- bool ContainsUserDataBlock(const TStringBuf& name) const;
- bool ContainsUserDataBlock(const TUserDataKey& key) const;
- const TUserDataBlock& GetUserDataBlock(const TUserDataKey& key) const;
- const TUserDataBlock* FindUserDataBlock(const TStringBuf& name) const;
- const TUserDataBlock* FindUserDataBlock(const TUserDataKey& key) const;
- TUserDataBlock* FindUserDataBlock(const TUserDataKey& key);
-
- static const TUserDataBlock* FindUserDataBlock(const TUserDataTable& userData, const TStringBuf& name);
- static const TUserDataBlock* FindUserDataBlock(const TUserDataTable& userData, const TUserDataKey& key);
-
- static TUserDataBlock* FindUserDataBlock(TUserDataTable& userData, const TStringBuf& name);
- static TUserDataBlock* FindUserDataBlock(TUserDataTable& userData, const TUserDataKey& key);
-
- bool ContainsUserDataFolder(const TStringBuf& name) const;
- TMaybe<std::map<TUserDataKey, const TUserDataBlock*>> FindUserDataFolder(const TStringBuf& name, ui32 maxFileCount = ~0u) const;
+
+#include <util/generic/maybe.h>
+
+namespace NYql {
+
+class TUserDataStorage : public TThrRefBase {
+public:
+ typedef TIntrusivePtr<TUserDataStorage> TPtr;
+ typedef std::function<TMaybe<TString>(const TString& url)> TTokenResolver;
+
+public:
+ TUserDataStorage(TFileStoragePtr fileStorage, TUserDataTable data, IUdfResolver::TPtr udfResolver, TUdfIndex::TPtr udfIndex);
+ void SetTokenResolver(TTokenResolver tokenResolver);
+
+ void AddUserDataBlock(const TStringBuf& name, const TUserDataBlock& block);
+ void AddUserDataBlock(const TUserDataKey& key, const TUserDataBlock& block);
+
+ bool ContainsUserDataBlock(const TStringBuf& name) const;
+ bool ContainsUserDataBlock(const TUserDataKey& key) const;
+ const TUserDataBlock& GetUserDataBlock(const TUserDataKey& key) const;
+ const TUserDataBlock* FindUserDataBlock(const TStringBuf& name) const;
+ const TUserDataBlock* FindUserDataBlock(const TUserDataKey& key) const;
+ TUserDataBlock* FindUserDataBlock(const TUserDataKey& key);
+
+ static const TUserDataBlock* FindUserDataBlock(const TUserDataTable& userData, const TStringBuf& name);
+ static const TUserDataBlock* FindUserDataBlock(const TUserDataTable& userData, const TUserDataKey& key);
+
+ static TUserDataBlock* FindUserDataBlock(TUserDataTable& userData, const TStringBuf& name);
+ static TUserDataBlock* FindUserDataBlock(TUserDataTable& userData, const TUserDataKey& key);
+
+ bool ContainsUserDataFolder(const TStringBuf& name) const;
+ TMaybe<std::map<TUserDataKey, const TUserDataBlock*>> FindUserDataFolder(const TStringBuf& name, ui32 maxFileCount = ~0u) const;
static TMaybe<std::map<TUserDataKey, const TUserDataBlock*>> FindUserDataFolder(const TUserDataTable& userData, const TStringBuf& name, ui32 maxFileCount = ~0u);
- void FillUserDataTokens();
- void TryFillUserDataToken(TUserDataBlock& block) const;
- std::map<TString, const TUserDataBlock*> GetDirectoryContent(const TStringBuf& path, ui32 maxFileCount = ~0u) const;
- static TString MakeFullName(const TStringBuf& name);
- static TString MakeFolderName(const TStringBuf& name);
- static TUserDataKey ComposeUserDataKey(const TStringBuf& name);
+ void FillUserDataTokens();
+ void TryFillUserDataToken(TUserDataBlock& block) const;
+ std::map<TString, const TUserDataBlock*> GetDirectoryContent(const TStringBuf& path, ui32 maxFileCount = ~0u) const;
+ static TString MakeFullName(const TStringBuf& name);
+ static TString MakeFolderName(const TStringBuf& name);
+ static TUserDataKey ComposeUserDataKey(const TStringBuf& name);
static TString MakeRelativeName(const TStringBuf& name);
TVector<TString> GetLibraries() const;
-
- // working with frozen files
- // download file and fill FrozenFile property of data block
- // returned pointer is valid until storage destruction, but keep in mind storage is used in multi-threading env and data could be changed
- // todo: consider more robust approach for multi-threading
- // there is a guarantee we return the same TFileLinkPtr for provided key if this method get called multiple times from different threads
- // program should work with single version of downloaded url when block type is URL
- // method should support parallel file downloading for different keys
- const TUserDataBlock& Freeze(const TUserDataKey& key);
- const TUserDataBlock* FreezeNoThrow(const TUserDataKey& key, TString& errorMessage);
-
- // as above + udf will be scanned and meta info put into UdfIndex
- const TUserDataBlock* FreezeUdfNoThrow(const TUserDataKey& key, TString& errorMessage);
-
- // returns function which will register value in cache after invocation
- NThreading::TFuture<std::function<TUserDataBlock()>> FreezeAsync(const TUserDataKey& key);
-
-private:
- TUserDataBlock& RegisterLink(const TUserDataKey& key, TFileLinkPtr link);
-
-private:
- THoldingFileStorage FileStorage_;
- TUserDataTable UserData_;
- IUdfResolver::TPtr UdfResolver;
- TUdfIndex::TPtr UdfIndex;
- TTokenResolver TokenResolver_;
-
- THashSet<TUserDataKey, TUserDataKey::THash, TUserDataKey::TEqualTo> ScannedUdfs;
- std::function<void(const TUserDataBlock& block)> ScanUdfStrategy_;
-};
-
-const TString& GetDefaultFilePrefix();
-void FillUserDataTableFromFileSystem(const NYqlMountConfig::TMountConfig& mount, TUserDataTable& userData);
-
-/*
-Start async freeze procedure for every not frozen element of the table (if FrozenFile is nullptr or if urlDownloadFilter returns true for url)
-Frozen file will be cached under data storage.
-Every key of not frozen block in input table should exist in data storage. No such requirements for other keys.
-Usage of input blocks will be preserved.
-*/
-NThreading::TFuture<std::function<TUserDataTable()>> FreezeUserDataTableIfNeeded(TUserDataStorage::TPtr userDataStorage, const TUserDataTable& files, const std::function<bool(const TString&)>& urlDownloadFilter);
-} // namespace NYql
+
+ // working with frozen files
+ // download file and fill FrozenFile property of data block
+ // returned pointer is valid until storage destruction, but keep in mind storage is used in multi-threading env and data could be changed
+ // todo: consider more robust approach for multi-threading
+ // there is a guarantee we return the same TFileLinkPtr for provided key if this method get called multiple times from different threads
+ // program should work with single version of downloaded url when block type is URL
+ // method should support parallel file downloading for different keys
+ const TUserDataBlock& Freeze(const TUserDataKey& key);
+ const TUserDataBlock* FreezeNoThrow(const TUserDataKey& key, TString& errorMessage);
+
+ // as above + udf will be scanned and meta info put into UdfIndex
+ const TUserDataBlock* FreezeUdfNoThrow(const TUserDataKey& key, TString& errorMessage);
+
+ // returns function which will register value in cache after invocation
+ NThreading::TFuture<std::function<TUserDataBlock()>> FreezeAsync(const TUserDataKey& key);
+
+private:
+ TUserDataBlock& RegisterLink(const TUserDataKey& key, TFileLinkPtr link);
+
+private:
+ THoldingFileStorage FileStorage_;
+ TUserDataTable UserData_;
+ IUdfResolver::TPtr UdfResolver;
+ TUdfIndex::TPtr UdfIndex;
+ TTokenResolver TokenResolver_;
+
+ THashSet<TUserDataKey, TUserDataKey::THash, TUserDataKey::TEqualTo> ScannedUdfs;
+ std::function<void(const TUserDataBlock& block)> ScanUdfStrategy_;
+};
+
+const TString& GetDefaultFilePrefix();
+void FillUserDataTableFromFileSystem(const NYqlMountConfig::TMountConfig& mount, TUserDataTable& userData);
+
+/*
+Start async freeze procedure for every not frozen element of the table (if FrozenFile is nullptr or if urlDownloadFilter returns true for url)
+Frozen file will be cached under data storage.
+Every key of not frozen block in input table should exist in data storage. No such requirements for other keys.
+Usage of input blocks will be preserved.
+*/
+NThreading::TFuture<std::function<TUserDataTable()>> FreezeUserDataTableIfNeeded(TUserDataStorage::TPtr userDataStorage, const TUserDataTable& files, const std::function<bool(const TString&)>& urlDownloadFilter);
+} // namespace NYql
diff --git a/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h b/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h
index deaadefb42..12d6aafb56 100644
--- a/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h
+++ b/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h
@@ -1166,7 +1166,7 @@ protected:
}
for (auto& [inputIndex, source] : SourcesMap) {
if (TaskRunner) { source.Source = TaskRunner->GetSource(inputIndex); Y_VERIFY(source.Source);}
- Y_VERIFY(SourceActorFactory);
+ Y_VERIFY(SourceActorFactory);
const auto& inputDesc = Task.GetInputs(inputIndex);
const ui64 i = inputIndex; // Crutch for clang
CA_LOG_D("Create source actor for input " << i << " " << inputDesc);
@@ -1222,9 +1222,9 @@ protected:
continue;
}
const i64 freeSpace = SourceFreeSpace(source);
- if (freeSpace > 0) {
+ if (freeSpace > 0) {
NKikimr::NMiniKQL::TUnboxedValueVector batch;
- Y_VERIFY(source.SourceActor);
+ Y_VERIFY(source.SourceActor);
bool finished = false;
const i64 space = source.SourceActor->GetSourceData(batch, finished, freeSpace);
const ui64 index = inputIndex;
diff --git a/ydb/library/yql/dq/actors/protos/dq_events.proto b/ydb/library/yql/dq/actors/protos/dq_events.proto
index 0e38ab3bbc..b6af2ca9b8 100644
--- a/ydb/library/yql/dq/actors/protos/dq_events.proto
+++ b/ydb/library/yql/dq/actors/protos/dq_events.proto
@@ -9,22 +9,22 @@ import "ydb/library/yql/dq/proto/dq_transport.proto";
import "ydb/public/api/protos/ydb_status_codes.proto";
import "ydb/public/api/protos/ydb_issue_message.proto";
-message TCheckpoint {
- optional uint64 Id = 1;
+message TCheckpoint {
+ optional uint64 Id = 1;
optional uint64 Generation = 2;
-};
-
-/*
- Data and control messages will be processed in the following order:
- 1) Data
- 2) Checkpoint
- 3) Finished
+};
+
+/*
+ Data and control messages will be processed in the following order:
+ 1) Data
+ 2) Checkpoint
+ 3) Finished
*/
message TChannelData {
optional uint64 ChannelId = 1;
optional NYql.NDqProto.TData Data = 2;
optional bool Finished = 3;
- optional TCheckpoint Checkpoint = 4;
+ optional TCheckpoint Checkpoint = 4;
};
message TEvRun {
diff --git a/ydb/library/yql/dq/opt/dq_opt.h b/ydb/library/yql/dq/opt/dq_opt.h
index 5b3146d0f4..0d6db327b0 100644
--- a/ydb/library/yql/dq/opt/dq_opt.h
+++ b/ydb/library/yql/dq/opt/dq_opt.h
@@ -22,7 +22,7 @@ struct TDqStageSettings {
bool SinglePartition = false;
bool IsExternalFunction = false;
- NDqProto::ETransformType TransformType = NDqProto::TRANSFORM_YANDEX_CLOUD;
+ NDqProto::ETransformType TransformType = NDqProto::TRANSFORM_YANDEX_CLOUD;
TString TransformName;
ui32 TransformConcurrency = 0;
diff --git a/ydb/library/yql/minikql/codegen/codegen.cpp b/ydb/library/yql/minikql/codegen/codegen.cpp
index 6e4096af22..b9c6b2ce82 100644
--- a/ydb/library/yql/minikql/codegen/codegen.cpp
+++ b/ydb/library/yql/minikql/codegen/codegen.cpp
@@ -309,11 +309,11 @@ public:
Triple_ = llvm::Triple::normalize(triple);
Module_->setTargetTriple(Triple_);
- llvm::TargetOptions targetOptions;
+ llvm::TargetOptions targetOptions;
targetOptions.EnableFastISel = true;
- // init manually, this field was lost in llvm::TargetOptions ctor :/
- // make coverity happy
- targetOptions.StackProtectorGuardOffset = 0;
+ // init manually, this field was lost in llvm::TargetOptions ctor :/
+ // make coverity happy
+ targetOptions.StackProtectorGuardOffset = 0;
std::string what;
auto&& engineBuilder = llvm::EngineBuilder(std::move(module));
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp
index 4e13f63a14..e6b7df4a35 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_combine.cpp
@@ -8,8 +8,8 @@
namespace NKikimr {
namespace NMiniKQL {
-TStatKey Combine_FlushesCount("Combine_FlushesCount", true);
-TStatKey Combine_MaxRowsCount("Combine_MaxRowsCount", false);
+TStatKey Combine_FlushesCount("Combine_FlushesCount", true);
+TStatKey Combine_MaxRowsCount("Combine_MaxRowsCount", false);
namespace {
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_join.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_join.cpp
index d2182bbc23..b9ee46ff47 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_join.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_join.cpp
@@ -18,9 +18,9 @@ namespace {
const ui64 DEFAULT_STACK_ITEMS = 16;
-static const TStatKey Join_Spill_Count("Join_Spill_Count", true);
-static const TStatKey Join_Spill_MaxFileSize("Join_Spill_MaxFileSize", false);
-static const TStatKey Join_Spill_MaxRowsCount("Join_Spill_MaxRowsCount", false);
+static const TStatKey Join_Spill_Count("Join_Spill_Count", true);
+static const TStatKey Join_Spill_MaxFileSize("Join_Spill_MaxFileSize", false);
+static const TStatKey Join_Spill_MaxRowsCount("Join_Spill_MaxRowsCount", false);
enum class EOutputMode {
Unknown,
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_multihopping.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_multihopping.cpp
index cb2b13f86d..6ed3304178 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_multihopping.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_multihopping.cpp
@@ -17,7 +17,7 @@ namespace {
const TStatKey Hop_NewHopsCount("MultiHop_NewHopsCount", true);
const TStatKey Hop_ThrownEventsCount("MultiHop_ThrownEventsCount", true);
const TStatKey Hop_EmptyTimeCount("MultiHop_EmptyTimeCount", true);
-const TStatKey Hop_KeysCount("MultiHop_KeysCount", true);
+const TStatKey Hop_KeysCount("MultiHop_KeysCount", true);
constexpr ui32 StateVersion = 1;
@@ -231,7 +231,7 @@ public:
CloseOldBuckets(*newWatermark, newHopsStat);
}
}
- MKQL_SET_STAT(Ctx.Stats, Hop_KeysCount, StatesMap.size());
+ MKQL_SET_STAT(Ctx.Stats, Hop_KeysCount, StatesMap.size());
}
}
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp
index 4571141d80..65f641d13f 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_switch.cpp
@@ -13,8 +13,8 @@ using NYql::EnsureDynamicCast;
namespace {
-static const TStatKey Switch_FlushesCount("Switch_FlushesCount", true);
-static const TStatKey Switch_MaxRowsCount("Switch_MaxRowsCount", false);
+static const TStatKey Switch_FlushesCount("Switch_FlushesCount", true);
+static const TStatKey Switch_MaxRowsCount("Switch_MaxRowsCount", false);
using TPagedUnboxedValueList = TPagedList<NUdf::TUnboxedValue>;
diff --git a/ydb/library/yql/minikql/comp_nodes/ya.make b/ydb/library/yql/minikql/comp_nodes/ya.make
index 55838c4012..f324e2e5c7 100644
--- a/ydb/library/yql/minikql/comp_nodes/ya.make
+++ b/ydb/library/yql/minikql/comp_nodes/ya.make
@@ -217,8 +217,8 @@ PEERDIR(
ydb/library/yql/utils
)
-NO_COMPILER_WARNINGS()
-
+NO_COMPILER_WARNINGS()
+
IF (NOT MKQL_DISABLE_CODEGEN)
PEERDIR(
ydb/library/yql/minikql/codegen
diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp b/ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp
index f2b188ae47..7bbc28af70 100644
--- a/ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp
+++ b/ydb/library/yql/minikql/computation/mkql_computation_node_graph.cpp
@@ -21,34 +21,34 @@ using namespace NDetail;
namespace {
-#ifndef MKQL_DISABLE_CODEGEN
+#ifndef MKQL_DISABLE_CODEGEN
constexpr ui64 TotalFunctionsLimit = 1000;
constexpr ui64 TotalInstructionsLimit = 100000;
constexpr ui64 MaxFunctionInstructionsLimit = 50000;
-#endif
+#endif
const ui64 IS_NODE_REACHABLE = 1;
-const static TStatKey PagePool_PeakAllocated("PagePool_PeakAllocated", false);
-const static TStatKey PagePool_PeakUsed("PagePool_PeakUsed", false);
-const static TStatKey PagePool_AllocCount("PagePool_AllocCount", true);
-const static TStatKey PagePool_PageAllocCount("PagePool_PageAllocCount", true);
-const static TStatKey PagePool_PageHitCount("PagePool_PageHitCount", true);
-const static TStatKey PagePool_PageMissCount("PagePool_PageMissCount", true);
-const static TStatKey PagePool_OffloadedAllocCount("PagePool_OffloadedAllocCount", true);
-const static TStatKey PagePool_OffloadedBytes("PagePool_OffloadedBytes", true);
-
-const static TStatKey CodeGen_FullTime("CodeGen_FullTime", true);
-const static TStatKey CodeGen_GenerateTime("CodeGen_GenerateTime", true);
-const static TStatKey CodeGen_CompileTime("CodeGen_CompileTime", true);
-const static TStatKey CodeGen_TotalFunctions("CodeGen_TotalFunctions", true);
-const static TStatKey CodeGen_TotalInstructions("CodeGen_TotalInstructions", true);
-const static TStatKey CodeGen_MaxFunctionInstructions("CodeGen_MaxFunctionInstructions", false);
-const static TStatKey CodeGen_ModulePassTime("CodeGen_ModulePassTime", true);
-const static TStatKey CodeGen_FinalizeTime("CodeGen_FinalizeTime", true);
-
-const static TStatKey Mkql_TotalNodes("Mkql_TotalNodes", true);
-const static TStatKey Mkql_CodegenFunctions("Mkql_CodegenFunctions", true);
+const static TStatKey PagePool_PeakAllocated("PagePool_PeakAllocated", false);
+const static TStatKey PagePool_PeakUsed("PagePool_PeakUsed", false);
+const static TStatKey PagePool_AllocCount("PagePool_AllocCount", true);
+const static TStatKey PagePool_PageAllocCount("PagePool_PageAllocCount", true);
+const static TStatKey PagePool_PageHitCount("PagePool_PageHitCount", true);
+const static TStatKey PagePool_PageMissCount("PagePool_PageMissCount", true);
+const static TStatKey PagePool_OffloadedAllocCount("PagePool_OffloadedAllocCount", true);
+const static TStatKey PagePool_OffloadedBytes("PagePool_OffloadedBytes", true);
+
+const static TStatKey CodeGen_FullTime("CodeGen_FullTime", true);
+const static TStatKey CodeGen_GenerateTime("CodeGen_GenerateTime", true);
+const static TStatKey CodeGen_CompileTime("CodeGen_CompileTime", true);
+const static TStatKey CodeGen_TotalFunctions("CodeGen_TotalFunctions", true);
+const static TStatKey CodeGen_TotalInstructions("CodeGen_TotalInstructions", true);
+const static TStatKey CodeGen_MaxFunctionInstructions("CodeGen_MaxFunctionInstructions", false);
+const static TStatKey CodeGen_ModulePassTime("CodeGen_ModulePassTime", true);
+const static TStatKey CodeGen_FinalizeTime("CodeGen_FinalizeTime", true);
+
+const static TStatKey Mkql_TotalNodes("Mkql_TotalNodes", true);
+const static TStatKey Mkql_CodegenFunctions("Mkql_CodegenFunctions", true);
class TDependencyScanVisitor : public TEmptyNodeVisitor {
public:
@@ -436,7 +436,7 @@ private:
const auto computationNode = Factory(node, ctx);
if (!computationNode) {
- THROW yexception()
+ THROW yexception()
<< "Computation graph builder, unsupported function: " << node.GetType()->GetName() << " type: " << Factory.target_type().name() ;
}
diff --git a/ydb/library/yql/minikql/computation/mkql_validate_impl.h b/ydb/library/yql/minikql/computation/mkql_validate_impl.h
index c4e10ac4b1..3763b833fb 100644
--- a/ydb/library/yql/minikql/computation/mkql_validate_impl.h
+++ b/ydb/library/yql/minikql/computation/mkql_validate_impl.h
@@ -18,7 +18,7 @@ struct TValidateErrorPolicyThrow {
template<class TException>
static void GenerateExc(const TException& exc) {
static_assert(std::is_base_of<yexception, TException>::value, "Must be derived from yexception");
- ythrow TException() << exc.AsStrBuf();
+ ythrow TException() << exc.AsStrBuf();
}
};
diff --git a/ydb/library/yql/minikql/mkql_function_registry.cpp b/ydb/library/yql/minikql/mkql_function_registry.cpp
index d3545ad138..699049bd44 100644
--- a/ydb/library/yql/minikql/mkql_function_registry.cpp
+++ b/ydb/library/yql/minikql/mkql_function_registry.cpp
@@ -99,7 +99,7 @@ class TMutableFunctionRegistry: public IMutableFunctionRegistry
};
public:
- TMutableFunctionRegistry(IBuiltinFunctionRegistry::TPtr builtins)
+ TMutableFunctionRegistry(IBuiltinFunctionRegistry::TPtr builtins)
: Builtins_(std::move(builtins))
{
}
@@ -127,7 +127,7 @@ public:
auto libIt = LoadedLibraries_.find(libraryPath);
if (libIt != LoadedLibraries_.end()) {
- return;
+ return;
} else {
lib = MakeIntrusive<TUdfLibrary>();
#ifdef _win32_
@@ -352,7 +352,7 @@ public:
return new TMutableFunctionRegistry(*this);
}
- void SetBackTraceCallback(NUdf::TBackTraceCallback callback) override {
+ void SetBackTraceCallback(NUdf::TBackTraceCallback callback) override {
BackTraceCallback_ = callback;
}
@@ -440,7 +440,7 @@ public:
}
TIntrusivePtr<IMutableFunctionRegistry> Clone() const override {
- return new TMutableFunctionRegistry(Builtins_);
+ return new TMutableFunctionRegistry(Builtins_);
}
private:
@@ -514,11 +514,11 @@ TIntrusivePtr<IFunctionRegistry> CreateFunctionRegistry(IBuiltinFunctionRegistry
}
TIntrusivePtr<IFunctionRegistry> CreateFunctionRegistry(
- NKikimr::NUdf::TBackTraceCallback backtraceCallback,
- IBuiltinFunctionRegistry::TPtr&& builtins,
- bool allowUdfPatch,
- const TVector<TString>& udfsPaths,
- ui32 flags /* = 0 */)
+ NKikimr::NUdf::TBackTraceCallback backtraceCallback,
+ IBuiltinFunctionRegistry::TPtr&& builtins,
+ bool allowUdfPatch,
+ const TVector<TString>& udfsPaths,
+ ui32 flags /* = 0 */)
{
auto registry = MakeHolder<TMutableFunctionRegistry>(std::move(builtins));
if (allowUdfPatch) {
diff --git a/ydb/library/yql/minikql/mkql_node.cpp b/ydb/library/yql/minikql/mkql_node.cpp
index 4c6f3e45ad..14f98daba4 100644
--- a/ydb/library/yql/minikql/mkql_node.cpp
+++ b/ydb/library/yql/minikql/mkql_node.cpp
@@ -596,7 +596,7 @@ ui32 TStructType::GetMemberIndex(const TStringBuf& name) const {
for (ui32 i = 0; i < MembersCount; ++i) {
ss << " " << Members[i].first.Str();
}
- THROW yexception() << "Member with name '" << name << "' not found; "
+ THROW yexception() << "Member with name '" << name << "' not found; "
<< " known members: " << ss.Str() << ".";
}
diff --git a/ydb/library/yql/minikql/mkql_node_serialization.cpp b/ydb/library/yql/minikql/mkql_node_serialization.cpp
index e314f38cd6..e079965bc6 100644
--- a/ydb/library/yql/minikql/mkql_node_serialization.cpp
+++ b/ydb/library/yql/minikql/mkql_node_serialization.cpp
@@ -1045,11 +1045,11 @@ namespace {
private:
[[noreturn]] static void ThrowNoData() {
- THROW yexception() << "No more data in buffer";
+ THROW yexception() << "No more data in buffer";
}
[[noreturn]] static void ThrowCorrupted() {
- THROW yexception() << "Serialized data is corrupted";
+ THROW yexception() << "Serialized data is corrupted";
}
Y_FORCE_INLINE char Read() {
diff --git a/ydb/library/yql/minikql/mkql_node_visitor.cpp b/ydb/library/yql/minikql/mkql_node_visitor.cpp
index 5a4ac8e479..9605e425cc 100644
--- a/ydb/library/yql/minikql/mkql_node_visitor.cpp
+++ b/ydb/library/yql/minikql/mkql_node_visitor.cpp
@@ -172,7 +172,7 @@ void TThrowingNodeVisitor::Visit(TBlockType& node) {
}
void TThrowingNodeVisitor::ThrowUnexpectedNodeType() {
- THROW yexception() << "Unexpected node type";
+ THROW yexception() << "Unexpected node type";
}
void TEmptyNodeVisitor::Visit(TTypeType& node) {
diff --git a/ydb/library/yql/minikql/mkql_stats_registry.cpp b/ydb/library/yql/minikql/mkql_stats_registry.cpp
index 431737731a..56b6070119 100644
--- a/ydb/library/yql/minikql/mkql_stats_registry.cpp
+++ b/ydb/library/yql/minikql/mkql_stats_registry.cpp
@@ -69,9 +69,9 @@ ui32 TStatKey::IdSequence_ = 0;
TStatKey* TStatKey::KeysChain_ = nullptr;
-TStatKey::TStatKey(TStringBuf name, bool deriv)
+TStatKey::TStatKey(TStringBuf name, bool deriv)
: Name_(name)
- , Deriv_(deriv)
+ , Deriv_(deriv)
, Id_(IdSequence_++)
{
bool newOne = Singleton<TKeyNames>()->AddIfNotExists(name);
diff --git a/ydb/library/yql/minikql/mkql_stats_registry.h b/ydb/library/yql/minikql/mkql_stats_registry.h
index 1b888153e4..a6d85dc56e 100644
--- a/ydb/library/yql/minikql/mkql_stats_registry.h
+++ b/ydb/library/yql/minikql/mkql_stats_registry.h
@@ -24,25 +24,25 @@ class TStatKey: public TIntrusiveSListItem<TStatKey> {
// -- instance part --
public:
- TStatKey(TStringBuf name, bool deriv);
+ TStatKey(TStringBuf name, bool deriv);
TStringBuf GetName() const noexcept { return Name_; }
- bool IsDeriv() const noexcept { return Deriv_; }
+ bool IsDeriv() const noexcept { return Deriv_; }
ui32 GetId() const noexcept { return Id_; }
- static ui32 GetMaxId() { return IdSequence_; }
-
- template <typename F>
- static void ForEach(F f) {
- for (TStatKey* p = KeysChain_; p;) {
- f(*p);
- auto n = p->Next();
- p = n ? n->Node() : nullptr;
- }
- }
-
+ static ui32 GetMaxId() { return IdSequence_; }
+
+ template <typename F>
+ static void ForEach(F f) {
+ for (TStatKey* p = KeysChain_; p;) {
+ f(*p);
+ auto n = p->Next();
+ p = n ? n->Node() : nullptr;
+ }
+ }
+
private:
TStringBuf Name_;
- bool Deriv_;
+ bool Deriv_;
ui32 Id_;
};
@@ -71,9 +71,9 @@ struct IStatsRegistry {
// TConsumer = void(const TStatKey& key, i64 value)
template <typename TConsumer>
void ForEachStat(TConsumer c) const {
- TStatKey::ForEach([this, &c](const auto& key) {
- c(key, GetStat(key));
- });
+ TStatKey::ForEach([this, &c](const auto& key) {
+ c(key, GetStat(key));
+ });
}
};
diff --git a/ydb/library/yql/minikql/mkql_stats_registry_ut.cpp b/ydb/library/yql/minikql/mkql_stats_registry_ut.cpp
index 0504fb2986..c94959649b 100644
--- a/ydb/library/yql/minikql/mkql_stats_registry_ut.cpp
+++ b/ydb/library/yql/minikql/mkql_stats_registry_ut.cpp
@@ -9,7 +9,7 @@ using namespace NMiniKQL;
Y_UNIT_TEST_SUITE(TStatsRegistryTest) {
Y_UNIT_TEST(Stats) {
- static TStatKey key("key", false);
+ static TStatKey key("key", false);
auto stats = CreateDefaultStatsRegistry();
stats->SetStat(key, 37);
@@ -38,9 +38,9 @@ Y_UNIT_TEST_SUITE(TStatsRegistryTest) {
}
Y_UNIT_TEST(ForEach) {
- static TStatKey key1("key1", false), key2("key2", true);
- UNIT_ASSERT(!key1.IsDeriv());
- UNIT_ASSERT(key2.IsDeriv());
+ static TStatKey key1("key1", false), key2("key2", true);
+ UNIT_ASSERT(!key1.IsDeriv());
+ UNIT_ASSERT(key2.IsDeriv());
auto stats = CreateDefaultStatsRegistry();
stats->SetStat(key1, 42);
@@ -61,7 +61,7 @@ Y_UNIT_TEST_SUITE(TStatsRegistryTest) {
Y_UNIT_TEST(DuplicateKeys) {
TString error;
try {
- static TStatKey key("my_key", false), sameKey("my_key", false);
+ static TStatKey key("my_key", false), sameKey("my_key", false);
// avoid variables elimitation
Cerr << key.GetId() << ": " << key.GetName() << '\n'
<< sameKey.GetId() << ": " << sameKey.GetName() << Endl;
diff --git a/ydb/library/yql/minikql/mkql_type_builder.cpp b/ydb/library/yql/minikql/mkql_type_builder.cpp
index 4aecb564bf..5812baa0a6 100644
--- a/ydb/library/yql/minikql/mkql_type_builder.cpp
+++ b/ydb/library/yql/minikql/mkql_type_builder.cpp
@@ -1396,9 +1396,9 @@ NUdf::IFunctionTypeInfoBuilder1& TFunctionTypeInfoBuilder::UserTypeImpl(
void TFunctionTypeInfoBuilder::SetError(const NUdf::TStringRef& error)
{
- if (!Error_) {
- Error_ = error;
- }
+ if (!Error_) {
+ Error_ = error;
+ }
}
void TFunctionTypeInfoBuilder::Build(TFunctionTypeInfo* funcInfo)
diff --git a/ydb/library/yql/parser/proto_ast/collect_issues/collect_issues.h b/ydb/library/yql/parser/proto_ast/collect_issues/collect_issues.h
index e9da86f7e7..9cea53e895 100644
--- a/ydb/library/yql/parser/proto_ast/collect_issues/collect_issues.h
+++ b/ydb/library/yql/parser/proto_ast/collect_issues/collect_issues.h
@@ -1,27 +1,27 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/parser/proto_ast/proto_ast.h>
#include <ydb/library/yql/public/issue/yql_issue.h>
-
+
namespace NSQLTranslation {
-
-class TErrorCollectorOverIssues : public NProtoAST::IErrorCollector {
-public:
+
+class TErrorCollectorOverIssues : public NProtoAST::IErrorCollector {
+public:
TErrorCollectorOverIssues(NYql::TIssues& issues, size_t maxErrors, const TString& file)
- : IErrorCollector(maxErrors)
- , Issues_(issues)
+ : IErrorCollector(maxErrors)
+ , Issues_(issues)
, File_(file)
- {
- }
-
-private:
- void AddError(ui32 line, ui32 col, const TString& message) override {
+ {
+ }
+
+private:
+ void AddError(ui32 line, ui32 col, const TString& message) override {
Issues_.AddIssue(NYql::TPosition(col, line, File_), message);
- }
-
-private:
- NYql::TIssues& Issues_;
+ }
+
+private:
+ NYql::TIssues& Issues_;
const TString File_;
-};
-
+};
+
} // namespace NSQLTranslation
diff --git a/ydb/library/yql/parser/proto_ast/proto_ast.cpp b/ydb/library/yql/parser/proto_ast/proto_ast.cpp
index 097ba08c85..faeb30373e 100644
--- a/ydb/library/yql/parser/proto_ast/proto_ast.cpp
+++ b/ydb/library/yql/parser/proto_ast/proto_ast.cpp
@@ -13,16 +13,16 @@ IErrorCollector::~IErrorCollector()
}
void IErrorCollector::Error(ui32 line, ui32 col, const TString& message) {
- if (NumErrors + 1 == MaxErrors) {
- AddError(0, 0, "Too many errors");
- ++NumErrors;
- }
-
- if (NumErrors >= MaxErrors) {
- ythrow TTooManyErrors() << "Too many errors";
- }
-
- AddError(line, col, message);
+ if (NumErrors + 1 == MaxErrors) {
+ AddError(0, 0, "Too many errors");
+ ++NumErrors;
+ }
+
+ if (NumErrors >= MaxErrors) {
+ ythrow TTooManyErrors() << "Too many errors";
+ }
+
+ AddError(line, col, message);
++NumErrors;
}
diff --git a/ydb/library/yql/parser/proto_ast/proto_ast.h b/ydb/library/yql/parser/proto_ast/proto_ast.h
index 5bb8a9f5f9..757d422203 100644
--- a/ydb/library/yql/parser/proto_ast/proto_ast.h
+++ b/ydb/library/yql/parser/proto_ast/proto_ast.h
@@ -32,15 +32,15 @@ namespace NProtoAST {
}
}
- class TTooManyErrors : public yexception {
- };
-
+ class TTooManyErrors : public yexception {
+ };
+
class IErrorCollector {
public:
- explicit IErrorCollector(size_t maxErrors);
+ explicit IErrorCollector(size_t maxErrors);
virtual ~IErrorCollector();
- // throws TTooManyErrors
+ // throws TTooManyErrors
void Error(ui32 line, ui32 col, const TString& message);
private:
@@ -57,7 +57,7 @@ namespace NProtoAST {
virtual ~TErrorOutput();
private:
- void AddError(ui32 line, ui32 col, const TString& message) override;
+ void AddError(ui32 line, ui32 col, const TString& message) override;
public:
IOutputStream& Err;
@@ -83,9 +83,9 @@ namespace NProtoAST {
try {
Lexer.ReportErrors(&errors);
return Parser.Parse(Lexer, &errors);
- } catch (const TTooManyErrors&) {
- return nullptr;
- } catch (const yexception& e) {
+ } catch (const TTooManyErrors&) {
+ return nullptr;
+ } catch (const yexception& e) {
errors.Error(0, 0, e.what());
return nullptr;
}
diff --git a/ydb/library/yql/providers/common/codec/ya.make b/ydb/library/yql/providers/common/codec/ya.make
index b3f3a92db5..aaa20c85c3 100644
--- a/ydb/library/yql/providers/common/codec/ya.make
+++ b/ydb/library/yql/providers/common/codec/ya.make
@@ -7,10 +7,10 @@ SRCS(
yql_codec.h
yql_codec_buf.cpp
yql_codec_buf.h
- yql_codec_results.cpp
- yql_codec_results.h
- yql_restricted_yson.cpp
- yql_restricted_yson.h
+ yql_codec_results.cpp
+ yql_codec_results.h
+ yql_restricted_yson.cpp
+ yql_restricted_yson.h
yql_codec_type_flags.cpp
yql_codec_type_flags.h
)
diff --git a/ydb/library/yql/providers/common/codec/yql_codec.cpp b/ydb/library/yql/providers/common/codec/yql_codec.cpp
index 7587e188fa..1c74c9960f 100644
--- a/ydb/library/yql/providers/common/codec/yql_codec.cpp
+++ b/ydb/library/yql/providers/common/codec/yql_codec.cpp
@@ -1,5 +1,5 @@
#include "yql_codec.h"
-#include "yql_restricted_yson.h"
+#include "yql_restricted_yson.h"
#include "yql_codec_type_flags.h"
#include <ydb/library/yql/core/yql_expr_type_annotation.h>
@@ -30,9 +30,9 @@ using namespace NKikimr;
using namespace NKikimr::NMiniKQL;
using namespace NYson::NDetail;
-void WriteYsonValueImpl(TYsonResultWriter& writer, const NUdf::TUnboxedValuePod& value, TType* type,
- const TVector<ui32>* structPositions) {
- // Result format
+void WriteYsonValueImpl(TYsonResultWriter& writer, const NUdf::TUnboxedValuePod& value, TType* type,
+ const TVector<ui32>* structPositions) {
+ // Result format
switch (type->GetKind()) {
case TType::EKind::Void:
writer.OnVoid();
@@ -52,83 +52,83 @@ void WriteYsonValueImpl(TYsonResultWriter& writer, const NUdf::TUnboxedValuePod&
switch (dataType->GetSchemeType()) {
case NUdf::TDataType<bool>::Id:
writer.OnBooleanScalar(value.Get<bool>());
- return;
+ return;
case NUdf::TDataType<i32>::Id:
writer.OnInt64Scalar(value.Get<i32>());
- return;
+ return;
case NUdf::TDataType<ui32>::Id:
writer.OnUint64Scalar(value.Get<ui32>());
- return;
+ return;
case NUdf::TDataType<i64>::Id:
writer.OnInt64Scalar(value.Get<i64>());
- return;
+ return;
case NUdf::TDataType<ui64>::Id:
writer.OnUint64Scalar(value.Get<ui64>());
- return;
+ return;
case NUdf::TDataType<ui8>::Id:
writer.OnUint64Scalar(value.Get<ui8>());
- return;
+ return;
case NUdf::TDataType<i8>::Id:
writer.OnInt64Scalar(value.Get<i8>());
- return;
+ return;
case NUdf::TDataType<ui16>::Id:
writer.OnUint64Scalar(value.Get<ui16>());
- return;
+ return;
case NUdf::TDataType<i16>::Id:
writer.OnInt64Scalar(value.Get<i16>());
- return;
+ return;
case NUdf::TDataType<float>::Id:
- writer.OnFloatScalar(value.Get<float>());
- return;
+ writer.OnFloatScalar(value.Get<float>());
+ return;
case NUdf::TDataType<double>::Id:
writer.OnDoubleScalar(value.Get<double>());
- return;
-
- case NUdf::TDataType<NUdf::TJson>::Id:
+ return;
+
+ case NUdf::TDataType<NUdf::TJson>::Id:
case NUdf::TDataType<NUdf::TUtf8>::Id:
- // assume underlying string is utf8
- writer.OnUtf8StringScalar(value.AsStringRef());
- return;
-
+ // assume underlying string is utf8
+ writer.OnUtf8StringScalar(value.AsStringRef());
+ return;
+
case NUdf::TDataType<char*>::Id:
case NUdf::TDataType<NUdf::TUuid>::Id:
case NUdf::TDataType<NUdf::TDyNumber>::Id:
writer.OnStringScalar(value.AsStringRef());
- return;
-
+ return;
+
case NUdf::TDataType<NUdf::TDecimal>::Id: {
const auto params = static_cast<TDataDecimalType*>(type)->GetParams();
const auto str = NDecimal::ToString(value.GetInt128(), params.first, params.second);
const auto size = str ? std::strlen(str) : 0;
- writer.OnUtf8StringScalar(TStringBuf(str, size));
- return;
+ writer.OnUtf8StringScalar(TStringBuf(str, size));
+ return;
}
case NUdf::TDataType<NUdf::TYson>::Id:
- EncodeRestrictedYson(writer, value.AsStringRef());
- return;
+ EncodeRestrictedYson(writer, value.AsStringRef());
+ return;
case NUdf::TDataType<NUdf::TDate>::Id:
writer.OnUint64Scalar(value.Get<ui16>());
- return;
+ return;
case NUdf::TDataType<NUdf::TDatetime>::Id:
writer.OnUint64Scalar(value.Get<ui32>());
- return;
+ return;
case NUdf::TDataType<NUdf::TTimestamp>::Id:
writer.OnUint64Scalar(value.Get<ui64>());
- return;
+ return;
case NUdf::TDataType<NUdf::TInterval>::Id:
writer.OnInt64Scalar(value.Get<i64>());
- return;
+ return;
case NUdf::TDataType<NUdf::TTzDate>::Id:
case NUdf::TDataType<NUdf::TTzDatetime>::Id:
case NUdf::TDataType<NUdf::TTzTimestamp>::Id:
case NUdf::TDataType<NUdf::TJsonDocument>::Id: {
const NUdf::TUnboxedValue out(ValueToString(*dataType->GetDataSlot(), value));
writer.OnUtf8StringScalar(out.AsStringRef());
- return;
+ return;
}
default:
- throw yexception() << "Unknown data type: " << dataType->GetSchemeType();
+ throw yexception() << "Unknown data type: " << dataType->GetSchemeType();
}
}
break;
@@ -143,12 +143,12 @@ void WriteYsonValueImpl(TYsonResultWriter& writer, const NUdf::TUnboxedValuePod&
const ui32 pos = structPositions ? (*structPositions)[i] : i;
if (pos < e) {
writer.OnListItem();
- WriteYsonValueImpl(writer, value.GetElement(pos), structType->GetMemberType(pos), nullptr);
+ WriteYsonValueImpl(writer, value.GetElement(pos), structType->GetMemberType(pos), nullptr);
}
}
writer.OnEndList();
- return;
+ return;
}
case TType::EKind::List:
{
@@ -157,24 +157,24 @@ void WriteYsonValueImpl(TYsonResultWriter& writer, const NUdf::TUnboxedValuePod&
const auto it = value.GetListIterator();
for (NUdf::TUnboxedValue item; it.Next(item);) {
writer.OnListItem();
- WriteYsonValueImpl(writer, item, listType->GetItemType(), nullptr);
+ WriteYsonValueImpl(writer, item, listType->GetItemType(), nullptr);
}
writer.OnEndList();
- return;
+ return;
}
case TType::EKind::Optional:
{
if (!value) {
- writer.OnEntity();
+ writer.OnEntity();
} else {
writer.OnBeginList();
auto optionalType = AS_TYPE(TOptionalType, type);
writer.OnListItem();
- WriteYsonValueImpl(writer, value.GetOptionalValue(), optionalType->GetItemType(), nullptr);
+ WriteYsonValueImpl(writer, value.GetOptionalValue(), optionalType->GetItemType(), nullptr);
writer.OnEndList();
}
- return;
+ return;
}
case TType::EKind::Dict:
{
@@ -184,29 +184,29 @@ void WriteYsonValueImpl(TYsonResultWriter& writer, const NUdf::TUnboxedValuePod&
for (NUdf::TUnboxedValue key, payload; it.NextPair(key, payload);) {
writer.OnListItem();
writer.OnBeginList();
- {
+ {
writer.OnListItem();
- WriteYsonValueImpl(writer, key, dictType->GetKeyType(), nullptr);
+ WriteYsonValueImpl(writer, key, dictType->GetKeyType(), nullptr);
writer.OnListItem();
- WriteYsonValueImpl(writer, payload, dictType->GetPayloadType(), nullptr);
- }
+ WriteYsonValueImpl(writer, payload, dictType->GetPayloadType(), nullptr);
+ }
writer.OnEndList();
}
writer.OnEndList();
}
- return;
+ return;
case TType::EKind::Tuple:
{
writer.OnBeginList();
auto tupleType = AS_TYPE(TTupleType, type);
for (ui32 i = 0, e = tupleType->GetElementsCount(); i < e; ++i) {
writer.OnListItem();
- WriteYsonValueImpl(writer, value.GetElement(i), tupleType->GetElementType(i), nullptr);
+ WriteYsonValueImpl(writer, value.GetElement(i), tupleType->GetElementType(i), nullptr);
}
writer.OnEndList();
- return;
+ return;
}
case TType::EKind::Variant:
{
@@ -217,13 +217,13 @@ void WriteYsonValueImpl(TYsonResultWriter& writer, const NUdf::TUnboxedValuePod&
writer.OnUint64Scalar(index);
writer.OnListItem();
if (underlyingType->IsTuple()) {
- WriteYsonValueImpl(writer, value.GetVariantItem(), AS_TYPE(TTupleType, underlyingType)->GetElementType(index), nullptr);
+ WriteYsonValueImpl(writer, value.GetVariantItem(), AS_TYPE(TTupleType, underlyingType)->GetElementType(index), nullptr);
} else {
- WriteYsonValueImpl(writer, value.GetVariantItem(), AS_TYPE(TStructType, underlyingType)->GetMemberType(index), nullptr);
+ WriteYsonValueImpl(writer, value.GetVariantItem(), AS_TYPE(TStructType, underlyingType)->GetMemberType(index), nullptr);
}
writer.OnEndList();
- return;
+ return;
}
case TType::EKind::Tagged:
@@ -234,22 +234,22 @@ void WriteYsonValueImpl(TYsonResultWriter& writer, const NUdf::TUnboxedValuePod&
}
default:
- YQL_ENSURE(false, "unknown type " << type->GetKindAsStr());
+ YQL_ENSURE(false, "unknown type " << type->GetKindAsStr());
}
}
void WriteYsonValue(NYson::TYsonConsumerBase& writer, const NUdf::TUnboxedValuePod& value, TType* type,
- const TVector<ui32>* structPositions)
-{
- TYsonResultWriter resultWriter(writer);
- WriteYsonValueImpl(resultWriter, value, type, structPositions);
-}
-
+ const TVector<ui32>* structPositions)
+{
+ TYsonResultWriter resultWriter(writer);
+ WriteYsonValueImpl(resultWriter, value, type, structPositions);
+}
+
TString WriteYsonValue(const NUdf::TUnboxedValuePod& value, TType* type, const TVector<ui32>* structPositions,
NYson::EYsonFormat format) {
TStringStream str;
NYson::TYsonWriter writer(&str, format);
- WriteYsonValue(writer, value, type, structPositions);
+ WriteYsonValue(writer, value, type, structPositions);
return str.Str();
}
@@ -407,31 +407,31 @@ TExprNode::TPtr DataNodeToExprLiteral(TPositionHandle pos, const TTypeAnnotation
TString DataValueToString(const NKikimr::NUdf::TUnboxedValuePod& value, const TDataExprType* type) {
switch (type->GetSlot()) {
case NUdf::EDataSlot::Int32:
- return ToString(value.Get<i32>());
+ return ToString(value.Get<i32>());
case NUdf::EDataSlot::Int64:
case NUdf::EDataSlot::Interval:
- return ToString(value.Get<i64>());
+ return ToString(value.Get<i64>());
case NUdf::EDataSlot::Uint32:
case NUdf::EDataSlot::Datetime:
- return ToString(value.Get<ui32>());
+ return ToString(value.Get<ui32>());
case NUdf::EDataSlot::Uint64:
case NUdf::EDataSlot::Timestamp:
- return ToString(value.Get<ui64>());
+ return ToString(value.Get<ui64>());
case NUdf::EDataSlot::Float:
- return ::FloatToString(value.Get<float>());
+ return ::FloatToString(value.Get<float>());
case NUdf::EDataSlot::Double:
- return ::FloatToString(value.Get<double>());
+ return ::FloatToString(value.Get<double>());
case NUdf::EDataSlot::Bool:
- return ToString(value.Get<bool>());
+ return ToString(value.Get<bool>());
case NUdf::EDataSlot::Uint8:
- return ToString(static_cast<unsigned int>(value.Get<ui8>()));
+ return ToString(static_cast<unsigned int>(value.Get<ui8>()));
case NUdf::EDataSlot::Int8:
- return ToString(static_cast<int>(value.Get<i8>()));
+ return ToString(static_cast<int>(value.Get<i8>()));
case NUdf::EDataSlot::Uint16:
case NUdf::EDataSlot::Date:
- return ToString(static_cast<unsigned int>(value.Get<ui16>()));
+ return ToString(static_cast<unsigned int>(value.Get<ui16>()));
case NUdf::EDataSlot::Int16:
- return ToString(static_cast<int>(value.Get<i16>()));
+ return ToString(static_cast<int>(value.Get<i16>()));
case NUdf::EDataSlot::String:
case NUdf::EDataSlot::Utf8:
case NUdf::EDataSlot::Json:
@@ -440,31 +440,31 @@ TString DataValueToString(const NKikimr::NUdf::TUnboxedValuePod& value, const TD
case NUdf::EDataSlot::DyNumber:
return ToString((TStringBuf)value.AsStringRef());
case NUdf::EDataSlot::Decimal:
- {
+ {
const auto params = dynamic_cast<const TDataExprParamsType*>(type);
return NDecimal::ToString(value.GetInt128(), FromString<ui8>(params->GetParamOne()), FromString<ui8>(params->GetParamTwo()));
}
case NUdf::EDataSlot::TzDate: {
- TStringStream out;
- out << value.Get<ui16>() << "," << NKikimr::NMiniKQL::GetTimezoneIANAName(value.GetTimezoneId());
- return out.Str();
- }
+ TStringStream out;
+ out << value.Get<ui16>() << "," << NKikimr::NMiniKQL::GetTimezoneIANAName(value.GetTimezoneId());
+ return out.Str();
+ }
case NUdf::EDataSlot::TzDatetime: {
- TStringStream out;
- out << value.Get<ui32>() << "," << NKikimr::NMiniKQL::GetTimezoneIANAName(value.GetTimezoneId());
- return out.Str();
- }
+ TStringStream out;
+ out << value.Get<ui32>() << "," << NKikimr::NMiniKQL::GetTimezoneIANAName(value.GetTimezoneId());
+ return out.Str();
+ }
case NUdf::EDataSlot::TzTimestamp: {
- TStringStream out;
- out << value.Get<ui64>() << "," << NKikimr::NMiniKQL::GetTimezoneIANAName(value.GetTimezoneId());
- return out.Str();
- }
+ TStringStream out;
+ out << value.Get<ui64>() << "," << NKikimr::NMiniKQL::GetTimezoneIANAName(value.GetTimezoneId());
+ return out.Str();
+ }
case NUdf::EDataSlot::JsonDocument: {
NUdf::TUnboxedValue json = ValueToString(EDataSlot::JsonDocument, value);
return ToString(TStringBuf(value.AsStringRef()));
}
}
-
+
Y_FAIL("Unexpected");
}
} //namespace
@@ -501,7 +501,7 @@ NYT::TNode ValueToNode(const NKikimr::NUdf::TUnboxedValuePod& value, NKikimr::NM
}
}
return result;
-}
+}
TExprNode::TPtr NodeToExprLiteral(TPositionHandle pos, const TTypeAnnotationNode& type, const NYT::TNode& node, TExprContext& ctx) {
TExprNode::TPtr result;
@@ -664,46 +664,46 @@ void SkipYson(char cmd, TInputBuf& buf) {
CopyYsonWithAttrs(cmd, buf, yson);
}
-NUdf::TUnboxedValue ReadYsonStringInResultFormat(char cmd, TInputBuf& buf) {
- NUdf::TUnboxedValue result;
- const bool needDecode = (cmd == BeginListSymbol);
-
- if (needDecode) {
- cmd = buf.Read();
- }
-
- CHECK_EXPECTED(cmd, StringMarker);
- const i32 length = buf.ReadVarI32();
- CHECK_STRING_LENGTH(length);
- TTempBuf tmpBuf(length);
- buf.ReadMany(tmpBuf.Data(), length);
-
- if (needDecode) {
- TString decoded = Base64Decode(TStringBuf(tmpBuf.Data(), length));
- result = NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(decoded)));
- } else {
- result = NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(tmpBuf.Data(), length)));
- }
-
- if (needDecode) {
- cmd = buf.Read();
- if (cmd == ListItemSeparatorSymbol) {
- cmd = buf.Read();
- }
-
- CHECK_EXPECTED(cmd, EndListSymbol);
- }
- return result;
-}
-
-TStringBuf ReadNextString(char cmd, TInputBuf& buf) {
- CHECK_EXPECTED(cmd, StringMarker);
- return buf.ReadYtString();
-}
-
-template <typename T>
-T ReadNextSerializedNumber(char cmd, TInputBuf& buf) {
- auto nextString = ReadNextString(cmd, buf);
+NUdf::TUnboxedValue ReadYsonStringInResultFormat(char cmd, TInputBuf& buf) {
+ NUdf::TUnboxedValue result;
+ const bool needDecode = (cmd == BeginListSymbol);
+
+ if (needDecode) {
+ cmd = buf.Read();
+ }
+
+ CHECK_EXPECTED(cmd, StringMarker);
+ const i32 length = buf.ReadVarI32();
+ CHECK_STRING_LENGTH(length);
+ TTempBuf tmpBuf(length);
+ buf.ReadMany(tmpBuf.Data(), length);
+
+ if (needDecode) {
+ TString decoded = Base64Decode(TStringBuf(tmpBuf.Data(), length));
+ result = NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(decoded)));
+ } else {
+ result = NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(tmpBuf.Data(), length)));
+ }
+
+ if (needDecode) {
+ cmd = buf.Read();
+ if (cmd == ListItemSeparatorSymbol) {
+ cmd = buf.Read();
+ }
+
+ CHECK_EXPECTED(cmd, EndListSymbol);
+ }
+ return result;
+}
+
+TStringBuf ReadNextString(char cmd, TInputBuf& buf) {
+ CHECK_EXPECTED(cmd, StringMarker);
+ return buf.ReadYtString();
+}
+
+template <typename T>
+T ReadNextSerializedNumber(char cmd, TInputBuf& buf) {
+ auto nextString = ReadNextString(cmd, buf);
if constexpr (!std::numeric_limits<T>::is_integer) {
if (nextString == "inf" || nextString == "+inf") {
return std::numeric_limits<T>::infinity();
@@ -713,23 +713,23 @@ T ReadNextSerializedNumber(char cmd, TInputBuf& buf) {
return std::numeric_limits<T>::quiet_NaN();
}
}
- return FromString<T>(nextString);
-}
-
-template <typename T>
-T ReadYsonFloatNumber(char cmd, TInputBuf& buf, bool isTableFormat) {
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, DoubleMarker);
- double dbl;
- buf.ReadMany((char*)&dbl, sizeof(dbl));
- return dbl;
- }
-
- return ReadNextSerializedNumber<T>(cmd, buf);
-}
-
+ return FromString<T>(nextString);
+}
+
+template <typename T>
+T ReadYsonFloatNumber(char cmd, TInputBuf& buf, bool isTableFormat) {
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, DoubleMarker);
+ double dbl;
+ buf.ReadMany((char*)&dbl, sizeof(dbl));
+ return dbl;
+ }
+
+ return ReadNextSerializedNumber<T>(cmd, buf);
+}
+
NUdf::TUnboxedValue ReadYsonValue(TType* type,
- const NKikimr::NMiniKQL::THolderFactory& holderFactory, char cmd, TInputBuf& buf, bool isTableFormat) {
+ const NKikimr::NMiniKQL::THolderFactory& holderFactory, char cmd, TInputBuf& buf, bool isTableFormat) {
switch (type->GetKind()) {
case TType::EKind::Variant: {
auto varType = static_cast<TVariantType*>(type);
@@ -744,15 +744,15 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
}
CHECK_EXPECTED(cmd, BeginListSymbol);
- cmd = buf.Read();
- ui64 index = 0;
- if (isTableFormat) {
+ cmd = buf.Read();
+ ui64 index = 0;
+ if (isTableFormat) {
CHECK_EXPECTED(cmd, Uint64Marker);
index = buf.ReadVarUI64();
- } else {
- index = ReadNextSerializedNumber<ui64>(cmd, buf);
- }
-
+ } else {
+ index = ReadNextSerializedNumber<ui64>(cmd, buf);
+ }
+
YQL_ENSURE(index < varType->GetAlternativesCount(), "Bad variant alternative: " << index << ", only " <<
varType->GetAlternativesCount() << " are available");
YQL_ENSURE(underlyingType->IsTuple() || underlyingType->IsStruct(), "Wrong underlying type");
@@ -766,7 +766,7 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
EXPECTED(buf, ListItemSeparatorSymbol);
cmd = buf.Read();
- auto value = ReadYsonValue(itemType, holderFactory, cmd, buf, isTableFormat);
+ auto value = ReadYsonValue(itemType, holderFactory, cmd, buf, isTableFormat);
cmd = buf.Read();
if (cmd == ListItemSeparatorSymbol) {
cmd = buf.Read();
@@ -779,87 +779,87 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
case TType::EKind::Data: {
auto schemeType = static_cast<TDataType*>(type)->GetSchemeType();
switch (schemeType) {
- case NUdf::TDataType<bool>::Id:
- YQL_ENSURE(cmd == FalseMarker || cmd == TrueMarker, "Expected either true or false, but got: " << TString(cmd).Quote());
- return NUdf::TUnboxedValuePod(cmd == TrueMarker);
+ case NUdf::TDataType<bool>::Id:
+ YQL_ENSURE(cmd == FalseMarker || cmd == TrueMarker, "Expected either true or false, but got: " << TString(cmd).Quote());
+ return NUdf::TUnboxedValuePod(cmd == TrueMarker);
case NUdf::TDataType<ui8>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Uint64Marker);
- return NUdf::TUnboxedValuePod(ui8(buf.ReadVarUI64()));
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui8>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Uint64Marker);
+ return NUdf::TUnboxedValuePod(ui8(buf.ReadVarUI64()));
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui8>(cmd, buf));
case NUdf::TDataType<i8>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Int64Marker);
- return NUdf::TUnboxedValuePod(i8(buf.ReadVarI64()));
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i8>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Int64Marker);
+ return NUdf::TUnboxedValuePod(i8(buf.ReadVarI64()));
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i8>(cmd, buf));
case NUdf::TDataType<ui16>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Uint64Marker);
- return NUdf::TUnboxedValuePod(ui16(buf.ReadVarUI64()));
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui16>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Uint64Marker);
+ return NUdf::TUnboxedValuePod(ui16(buf.ReadVarUI64()));
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui16>(cmd, buf));
case NUdf::TDataType<i16>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Int64Marker);
- return NUdf::TUnboxedValuePod(i16(buf.ReadVarI64()));
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i16>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Int64Marker);
+ return NUdf::TUnboxedValuePod(i16(buf.ReadVarI64()));
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i16>(cmd, buf));
case NUdf::TDataType<i32>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Int64Marker);
- return NUdf::TUnboxedValuePod(i32(buf.ReadVarI64()));
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i32>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Int64Marker);
+ return NUdf::TUnboxedValuePod(i32(buf.ReadVarI64()));
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i32>(cmd, buf));
case NUdf::TDataType<ui32>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Uint64Marker);
- return NUdf::TUnboxedValuePod(ui32(buf.ReadVarUI64()));
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui32>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Uint64Marker);
+ return NUdf::TUnboxedValuePod(ui32(buf.ReadVarUI64()));
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui32>(cmd, buf));
case NUdf::TDataType<i64>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Int64Marker);
- return NUdf::TUnboxedValuePod(buf.ReadVarI64());
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i64>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Int64Marker);
+ return NUdf::TUnboxedValuePod(buf.ReadVarI64());
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i64>(cmd, buf));
case NUdf::TDataType<ui64>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Uint64Marker);
- return NUdf::TUnboxedValuePod(buf.ReadVarUI64());
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui64>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Uint64Marker);
+ return NUdf::TUnboxedValuePod(buf.ReadVarUI64());
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui64>(cmd, buf));
- case NUdf::TDataType<float>::Id:
- return NUdf::TUnboxedValuePod(ReadYsonFloatNumber<float>(cmd, buf, isTableFormat));
+ case NUdf::TDataType<float>::Id:
+ return NUdf::TUnboxedValuePod(ReadYsonFloatNumber<float>(cmd, buf, isTableFormat));
- case NUdf::TDataType<double>::Id:
- return NUdf::TUnboxedValuePod(ReadYsonFloatNumber<double>(cmd, buf, isTableFormat));
+ case NUdf::TDataType<double>::Id:
+ return NUdf::TUnboxedValuePod(ReadYsonFloatNumber<double>(cmd, buf, isTableFormat));
case NUdf::TDataType<NUdf::TUtf8>::Id:
case NUdf::TDataType<char*>::Id:
case NUdf::TDataType<NUdf::TJson>::Id:
case NUdf::TDataType<NUdf::TDyNumber>::Id:
case NUdf::TDataType<NUdf::TUuid>::Id: {
- if (isTableFormat) {
- auto nextString = ReadNextString(cmd, buf);
- return NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(nextString)));
- }
-
- return ReadYsonStringInResultFormat(cmd, buf);
+ if (isTableFormat) {
+ auto nextString = ReadNextString(cmd, buf);
+ return NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(nextString)));
+ }
+
+ return ReadYsonStringInResultFormat(cmd, buf);
}
case NUdf::TDataType<NUdf::TDecimal>::Id: {
- auto nextString = ReadNextString(cmd, buf);
+ auto nextString = ReadNextString(cmd, buf);
if (isTableFormat) {
const auto& des = NDecimal::Deserialize(nextString.data());
YQL_ENSURE(nextString.size() == des.second);
@@ -877,91 +877,91 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
auto& yson = buf.YsonBuffer();
yson.clear();
CopyYsonWithAttrs(cmd, buf, yson);
-
- if (isTableFormat) {
- return NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(yson)));
- }
-
+
+ if (isTableFormat) {
+ return NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(yson)));
+ }
+
TString decodedYson = DecodeRestrictedYson(TStringBuf(yson.data(), yson.size()), NYson::EYsonFormat::Text);
- return NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(decodedYson)));
+ return NUdf::TUnboxedValue(MakeString(NUdf::TStringRef(decodedYson)));
}
case NUdf::TDataType<NUdf::TDate>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Uint64Marker);
- return NUdf::TUnboxedValuePod((ui16)buf.ReadVarUI64());
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui16>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Uint64Marker);
+ return NUdf::TUnboxedValuePod((ui16)buf.ReadVarUI64());
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui16>(cmd, buf));
case NUdf::TDataType<NUdf::TDatetime>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Uint64Marker);
- return NUdf::TUnboxedValuePod((ui32)buf.ReadVarUI64());
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui32>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Uint64Marker);
+ return NUdf::TUnboxedValuePod((ui32)buf.ReadVarUI64());
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui32>(cmd, buf));
case NUdf::TDataType<NUdf::TTimestamp>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Uint64Marker);
- return NUdf::TUnboxedValuePod(buf.ReadVarUI64());
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui64>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Uint64Marker);
+ return NUdf::TUnboxedValuePod(buf.ReadVarUI64());
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<ui64>(cmd, buf));
case NUdf::TDataType<NUdf::TInterval>::Id:
- if (isTableFormat) {
- CHECK_EXPECTED(cmd, Int64Marker);
- return NUdf::TUnboxedValuePod(buf.ReadVarI64());
- }
- return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i64>(cmd, buf));
+ if (isTableFormat) {
+ CHECK_EXPECTED(cmd, Int64Marker);
+ return NUdf::TUnboxedValuePod(buf.ReadVarI64());
+ }
+ return NUdf::TUnboxedValuePod(ReadNextSerializedNumber<i64>(cmd, buf));
case NUdf::TDataType<NUdf::TTzDate>::Id: {
- auto nextString = ReadNextString(cmd, buf);
- NUdf::TUnboxedValuePod data;
- if (isTableFormat) {
- ui16 value;
+ auto nextString = ReadNextString(cmd, buf);
+ NUdf::TUnboxedValuePod data;
+ if (isTableFormat) {
+ ui16 value;
ui16 tzId = 0;
- YQL_ENSURE(DeserializeTzDate(nextString, value, tzId));
- data = NUdf::TUnboxedValuePod(value);
+ YQL_ENSURE(DeserializeTzDate(nextString, value, tzId));
+ data = NUdf::TUnboxedValuePod(value);
data.SetTimezoneId(tzId);
- } else {
+ } else {
data = ValueFromString(NUdf::EDataSlot::TzDate, nextString);
YQL_ENSURE(data, "incorrect tz date format for value " << nextString);
- }
-
+ }
+
return data;
}
case NUdf::TDataType<NUdf::TTzDatetime>::Id: {
- auto nextString = ReadNextString(cmd, buf);
- NUdf::TUnboxedValuePod data;
- if (isTableFormat) {
- ui32 value;
+ auto nextString = ReadNextString(cmd, buf);
+ NUdf::TUnboxedValuePod data;
+ if (isTableFormat) {
+ ui32 value;
ui16 tzId = 0;
- YQL_ENSURE(DeserializeTzDatetime(nextString, value, tzId));
- data = NUdf::TUnboxedValuePod(value);
+ YQL_ENSURE(DeserializeTzDatetime(nextString, value, tzId));
+ data = NUdf::TUnboxedValuePod(value);
data.SetTimezoneId(tzId);
- } else {
+ } else {
data = ValueFromString(NUdf::EDataSlot::TzDatetime, nextString);
YQL_ENSURE(data, "incorrect tz datetime format for value " << nextString);
- }
-
+ }
+
return data;
}
case NUdf::TDataType<NUdf::TTzTimestamp>::Id: {
- auto nextString = ReadNextString(cmd, buf);
- NUdf::TUnboxedValuePod data;
- if (isTableFormat) {
- ui64 value;
+ auto nextString = ReadNextString(cmd, buf);
+ NUdf::TUnboxedValuePod data;
+ if (isTableFormat) {
+ ui64 value;
ui16 tzId = 0;
- YQL_ENSURE(DeserializeTzTimestamp(nextString, value, tzId));
- data = NUdf::TUnboxedValuePod(value);
+ YQL_ENSURE(DeserializeTzTimestamp(nextString, value, tzId));
+ data = NUdf::TUnboxedValuePod(value);
data.SetTimezoneId(tzId);
- } else {
+ } else {
data = ValueFromString(NUdf::EDataSlot::TzTimestamp, nextString);
YQL_ENSURE(data, "incorrect tz timestamp format for value " << nextString);
- }
-
+ }
+
return data;
}
@@ -988,7 +988,7 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
cmd = buf.Read();
for (ui32 i = 0; i < structType->GetMembersCount(); ++i) {
- items[i] = ReadYsonValue(structType->GetMemberType(i), holderFactory, cmd, buf, isTableFormat);
+ items[i] = ReadYsonValue(structType->GetMemberType(i), holderFactory, cmd, buf, isTableFormat);
cmd = buf.Read();
if (cmd == ListItemSeparatorSymbol) {
@@ -1007,7 +1007,7 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
break;
}
- auto keyBuffer = ReadNextString(cmd, buf);
+ auto keyBuffer = ReadNextString(cmd, buf);
auto pos = structType->FindMemberIndex(keyBuffer);
EXPECTED(buf, KeyValueSeparatorSymbol);
cmd = buf.Read();
@@ -1052,7 +1052,7 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
break;
}
- items = items.Append(ReadYsonValue(itemType, holderFactory, cmd, buf, isTableFormat));
+ items = items.Append(ReadYsonValue(itemType, holderFactory, cmd, buf, isTableFormat));
cmd = buf.Read();
if (cmd == ListItemSeparatorSymbol) {
@@ -1070,7 +1070,7 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
auto itemType = static_cast<TOptionalType*>(type)->GetItemType();
if (cmd != BeginListSymbol) {
- auto value = ReadYsonValue(itemType, holderFactory, cmd, buf, isTableFormat);
+ auto value = ReadYsonValue(itemType, holderFactory, cmd, buf, isTableFormat);
return value.Release().MakeOptional();
}
@@ -1079,7 +1079,7 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
return NUdf::TUnboxedValuePod();
}
- auto value = ReadYsonValue(itemType, holderFactory, cmd, buf, isTableFormat);
+ auto value = ReadYsonValue(itemType, holderFactory, cmd, buf, isTableFormat);
cmd = buf.Read();
if (cmd == ListItemSeparatorSymbol) {
cmd = buf.Read();
@@ -1105,8 +1105,8 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
YQL_ENSURE(cmd == BeginListSymbol || cmd == BeginMapSymbol, "Expected '{' or '[', but read: " << TString(cmd).Quote());
if (cmd == BeginMapSymbol) {
- bool unusedIsOptional;
- auto unpackedType = UnpackOptional(keyType, unusedIsOptional);
+ bool unusedIsOptional;
+ auto unpackedType = UnpackOptional(keyType, unusedIsOptional);
YQL_ENSURE(unpackedType->IsData() &&
static_cast<TDataType*>(unpackedType)->GetSchemeType() == NUdf::TDataType<char*>::Id,
"Expected String type as dictionary key type");
@@ -1119,11 +1119,11 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
break;
}
- auto keyBuffer = ReadNextString(cmd, buf);
+ auto keyBuffer = ReadNextString(cmd, buf);
auto keyStr = NUdf::TUnboxedValue(MakeString(keyBuffer));
EXPECTED(buf, KeyValueSeparatorSymbol);
cmd = buf.Read();
- auto payload = ReadYsonValue(payloadType, holderFactory, cmd, buf, isTableFormat);
+ auto payload = ReadYsonValue(payloadType, holderFactory, cmd, buf, isTableFormat);
map.emplace(std::move(keyStr), std::move(payload));
cmd = buf.Read();
@@ -1146,10 +1146,10 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
CHECK_EXPECTED(cmd, BeginListSymbol);
cmd = buf.Read();
- auto key = ReadYsonValue(keyType, holderFactory, cmd, buf, isTableFormat);
+ auto key = ReadYsonValue(keyType, holderFactory, cmd, buf, isTableFormat);
EXPECTED(buf, ListItemSeparatorSymbol);
cmd = buf.Read();
- auto payload = ReadYsonValue(payloadType, holderFactory, cmd, buf, isTableFormat);
+ auto payload = ReadYsonValue(payloadType, holderFactory, cmd, buf, isTableFormat);
cmd = buf.Read();
if (cmd == ListItemSeparatorSymbol) {
cmd = buf.Read();
@@ -1181,7 +1181,7 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
cmd = buf.Read();
for (ui32 i = 0; i < tupleType->GetElementsCount(); ++i) {
- items[i] = ReadYsonValue(tupleType->GetElementType(i), holderFactory, cmd, buf, isTableFormat);
+ items[i] = ReadYsonValue(tupleType->GetElementType(i), holderFactory, cmd, buf, isTableFormat);
cmd = buf.Read();
if (cmd == ListItemSeparatorSymbol) {
@@ -1199,8 +1199,8 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
return NUdf::TUnboxedValuePod::Void();
}
- auto nextString = ReadNextString(cmd, buf);
- YQL_ENSURE(nextString == TYsonResultWriter::VoidString, "Expected Void");
+ auto nextString = ReadNextString(cmd, buf);
+ YQL_ENSURE(nextString == TYsonResultWriter::VoidString, "Expected Void");
return NUdf::TUnboxedValuePod::Void();
}
@@ -1235,7 +1235,7 @@ NUdf::TUnboxedValue ReadYsonValue(TType* type,
}
TMaybe<NUdf::TUnboxedValue> ParseYsonValue(const THolderFactory& holderFactory,
- const TStringBuf& yson, TType* type, IOutputStream* err, bool isTableFormat) {
+ const TStringBuf& yson, TType* type, IOutputStream* err, bool isTableFormat) {
try {
class TReader : public IBlockReader {
public:
@@ -1274,7 +1274,7 @@ TMaybe<NUdf::TUnboxedValue> ParseYsonValue(const THolderFactory& holderFactory,
TReader reader(yson);
TInputBuf buf(reader, nullptr);
char cmd = buf.Read();
- return ReadYsonValue(type, holderFactory, cmd, buf, isTableFormat);
+ return ReadYsonValue(type, holderFactory, cmd, buf, isTableFormat);
}
catch (const yexception& e) {
if (err) {
@@ -1289,11 +1289,11 @@ TMaybe<NUdf::TUnboxedValue> ParseYsonNode(const THolderFactory& holderFactory,
return ParseYsonValue(holderFactory, NYT::NodeToYsonString(node, NYson::EYsonFormat::Binary), type, err, true);
}
-TMaybe<NUdf::TUnboxedValue> ParseYsonNodeInResultFormat(const THolderFactory& holderFactory,
- const NYT::TNode& node, TType* type, IOutputStream* err) {
+TMaybe<NUdf::TUnboxedValue> ParseYsonNodeInResultFormat(const THolderFactory& holderFactory,
+ const NYT::TNode& node, TType* type, IOutputStream* err) {
return ParseYsonValue(holderFactory, NYT::NodeToYsonString(node, NYson::EYsonFormat::Binary), type, err, false);
-}
-
+}
+
extern "C" void ReadYsonContainerValue(TType* type, const NKikimr::NMiniKQL::THolderFactory& holderFactory,
NUdf::TUnboxedValue& value, TInputBuf& buf, bool wrapOptional) {
// yson content
@@ -1303,7 +1303,7 @@ extern "C" void ReadYsonContainerValue(TType* type, const NKikimr::NMiniKQL::THo
// parse binary yson...
YQL_ENSURE(size > 0);
char cmd = buf.Read();
- auto tmp = ReadYsonValue(type, holderFactory, cmd, buf, true);
+ auto tmp = ReadYsonValue(type, holderFactory, cmd, buf, true);
if (!wrapOptional) {
value = std::move(tmp);
}
@@ -1687,8 +1687,8 @@ private:
TPageHeader Dummy_;
};
-void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnboxedValuePod& value, bool topLevel) {
- // Table format, very compact
+void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnboxedValuePod& value, bool topLevel) {
+ // Table format, very compact
switch (type->GetKind()) {
case TType::EKind::Variant: {
buf.Write(BeginListSymbol);
@@ -1709,7 +1709,7 @@ void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnbo
itemType = static_cast<TStructType*>(underlyingType)->GetMemberType(index);
}
- WriteYsonValueInTableFormat(buf, itemType, value.GetVariantItem(), false);
+ WriteYsonValueInTableFormat(buf, itemType, value.GetVariantItem(), false);
buf.Write(ListItemSeparatorSymbol);
buf.Write(EndListSymbol);
break;
@@ -1877,7 +1877,7 @@ void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnbo
auto structType = static_cast<TStructType*>(type);
buf.Write(BeginListSymbol);
for (ui32 i = 0; i < structType->GetMembersCount(); ++i) {
- WriteYsonValueInTableFormat(buf, structType->GetMemberType(i), value.GetElement(i), false);
+ WriteYsonValueInTableFormat(buf, structType->GetMemberType(i), value.GetElement(i), false);
buf.Write(ListItemSeparatorSymbol);
}
@@ -1890,7 +1890,7 @@ void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnbo
const auto iter = value.GetListIterator();
buf.Write(BeginListSymbol);
for (NUdf::TUnboxedValue item; iter.Next(item); buf.Write(ListItemSeparatorSymbol)) {
- WriteYsonValueInTableFormat(buf, itemType, item, false);
+ WriteYsonValueInTableFormat(buf, itemType, item, false);
}
buf.Write(EndListSymbol);
@@ -1910,7 +1910,7 @@ void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnbo
}
else {
buf.Write(BeginListSymbol);
- WriteYsonValueInTableFormat(buf, itemType, value.GetOptionalValue(), false);
+ WriteYsonValueInTableFormat(buf, itemType, value.GetOptionalValue(), false);
buf.Write(ListItemSeparatorSymbol);
buf.Write(EndListSymbol);
}
@@ -1924,9 +1924,9 @@ void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnbo
buf.Write(BeginListSymbol);
for (NUdf::TUnboxedValue key, payload; iter.NextPair(key, payload);) {
buf.Write(BeginListSymbol);
- WriteYsonValueInTableFormat(buf, dictType->GetKeyType(), key, false);
+ WriteYsonValueInTableFormat(buf, dictType->GetKeyType(), key, false);
buf.Write(ListItemSeparatorSymbol);
- WriteYsonValueInTableFormat(buf, dictType->GetPayloadType(), payload, false);
+ WriteYsonValueInTableFormat(buf, dictType->GetPayloadType(), payload, false);
buf.Write(ListItemSeparatorSymbol);
buf.Write(EndListSymbol);
buf.Write(ListItemSeparatorSymbol);
@@ -1940,7 +1940,7 @@ void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnbo
auto tupleType = static_cast<TTupleType*>(type);
buf.Write(BeginListSymbol);
for (ui32 i = 0; i < tupleType->GetElementsCount(); ++i) {
- WriteYsonValueInTableFormat(buf, tupleType->GetElementType(i), value.GetElement(i), false);
+ WriteYsonValueInTableFormat(buf, tupleType->GetElementType(i), value.GetElement(i), false);
buf.Write(ListItemSeparatorSymbol);
}
@@ -1978,7 +1978,7 @@ void WriteYsonValueInTableFormat(TOutputBuf& buf, TType* type, const NUdf::TUnbo
extern "C" void WriteYsonContainerValue(TType* type, const NUdf::TUnboxedValuePod& value, TOutputBuf& buf) {
TTempBlockWriter blockWriter;
TOutputBuf ysonBuf(blockWriter, nullptr);
- WriteYsonValueInTableFormat(ysonBuf, type, value, true);
+ WriteYsonValueInTableFormat(ysonBuf, type, value, true);
ysonBuf.Flush();
ui32 size = ysonBuf.GetWrittenBytes();
buf.WriteMany((const char*)&size, sizeof(size));
@@ -2284,11 +2284,11 @@ TExprNode::TPtr ValueToExprLiteral(const TTypeAnnotationNode* type, const NKikim
auto dataType = type->Cast<TDataExprType>();
TVector<TExprNode::TPtr> args({ ctx.NewAtom(pos, DataValueToString(value, dataType)) });
if (auto params = dynamic_cast<const TDataExprParamsType*>(dataType)) {
- args.reserve(3);
+ args.reserve(3);
args.push_back(ctx.NewAtom(pos, params->GetParamOne()));
args.push_back(ctx.NewAtom(pos, params->GetParamTwo()));
- }
-
+ }
+
return ctx.NewCallable(pos, dataType->GetName(), std::move(args));
}
diff --git a/ydb/library/yql/providers/common/codec/yql_codec.h b/ydb/library/yql/providers/common/codec/yql_codec.h
index 512e01224c..c6e93ac9fc 100644
--- a/ydb/library/yql/providers/common/codec/yql_codec.h
+++ b/ydb/library/yql/providers/common/codec/yql_codec.h
@@ -28,7 +28,7 @@ void WriteYsonValue(
NYson::TYsonConsumerBase& writer,
const NKikimr::NUdf::TUnboxedValuePod& value,
NKikimr::NMiniKQL::TType* type,
- const TVector<ui32>* structPositions = nullptr
+ const TVector<ui32>* structPositions = nullptr
);
TString WriteYsonValue(
@@ -62,16 +62,16 @@ struct TCodecContext {
void SkipYson(char cmd, TInputBuf& buf);
void CopyYson(char cmd, TInputBuf& buf, TVector<char>& yson);
void CopyYsonWithAttrs(char cmd, TInputBuf& buf, TVector<char>& yson);
-NKikimr::NUdf::TUnboxedValue ReadYsonValue(NKikimr::NMiniKQL::TType* type, const NKikimr::NMiniKQL::THolderFactory& holderFactory, char cmd, TInputBuf& buf, bool isTableFormat);
+NKikimr::NUdf::TUnboxedValue ReadYsonValue(NKikimr::NMiniKQL::TType* type, const NKikimr::NMiniKQL::THolderFactory& holderFactory, char cmd, TInputBuf& buf, bool isTableFormat);
TMaybe<NKikimr::NUdf::TUnboxedValue> ParseYsonValue(const NKikimr::NMiniKQL::THolderFactory& holderFactory,
- const TStringBuf& yson, NKikimr::NMiniKQL::TType* type, IOutputStream* err, bool isTableFormat);
+ const TStringBuf& yson, NKikimr::NMiniKQL::TType* type, IOutputStream* err, bool isTableFormat);
TMaybe<NKikimr::NUdf::TUnboxedValue> ParseYsonNode(const NKikimr::NMiniKQL::THolderFactory& holderFactory,
const NYT::TNode& node, NKikimr::NMiniKQL::TType* type, IOutputStream* err);
-TMaybe<NKikimr::NUdf::TUnboxedValue> ParseYsonNodeInResultFormat(const NKikimr::NMiniKQL::THolderFactory& holderFactory,
- const NYT::TNode& node, NKikimr::NMiniKQL::TType* type, IOutputStream* err);
-
+TMaybe<NKikimr::NUdf::TUnboxedValue> ParseYsonNodeInResultFormat(const NKikimr::NMiniKQL::THolderFactory& holderFactory,
+ const NYT::TNode& node, NKikimr::NMiniKQL::TType* type, IOutputStream* err);
+
extern "C" void ReadYsonContainerValue(NKikimr::NMiniKQL::TType* type,
const NKikimr::NMiniKQL::THolderFactory& holderFactory, NKikimr::NUdf::TUnboxedValue& value, NCommon::TInputBuf& buf,
bool wrapOptional);
@@ -95,7 +95,7 @@ void WriteSkiffNativeYtValue(NKikimr::NMiniKQL::TType* type, ui64 nativeYtTypeFl
extern "C" void WriteContainerNativeYtValue(NKikimr::NMiniKQL::TType* type, ui64 nativeYtTypeFlags,
const NKikimr::NUdf::TUnboxedValuePod& value, NCommon::TOutputBuf& buf);
-void WriteYsonValueInTableFormat(TOutputBuf& buf, NKikimr::NMiniKQL::TType* type, const NKikimr::NUdf::TUnboxedValuePod& value, bool topLevel);
+void WriteYsonValueInTableFormat(TOutputBuf& buf, NKikimr::NMiniKQL::TType* type, const NKikimr::NUdf::TUnboxedValuePod& value, bool topLevel);
TExprNode::TPtr ValueToExprLiteral(const TTypeAnnotationNode* type, const NKikimr::NUdf::TUnboxedValuePod& value, TExprContext& ctx,
TPositionHandle pos = {});
diff --git a/ydb/library/yql/providers/common/codec/yql_codec_buf.cpp b/ydb/library/yql/providers/common/codec/yql_codec_buf.cpp
index ddaaeab6b7..10a611a43e 100644
--- a/ydb/library/yql/providers/common/codec/yql_codec_buf.cpp
+++ b/ydb/library/yql/providers/common/codec/yql_codec_buf.cpp
@@ -3,8 +3,8 @@
namespace NYql {
namespace NCommon {
-NKikimr::NMiniKQL::TStatKey InputBytes("Job_InputBytes", true);
-NKikimr::NMiniKQL::TStatKey OutputBytes("Job_OutputBytes", true);
+NKikimr::NMiniKQL::TStatKey InputBytes("Job_InputBytes", true);
+NKikimr::NMiniKQL::TStatKey OutputBytes("Job_OutputBytes", true);
ui32 TInputBuf::CopyVarUI32(TVector<char>& yson) {
char cmd = Read();
diff --git a/ydb/library/yql/providers/common/codec/yql_codec_results.cpp b/ydb/library/yql/providers/common/codec/yql_codec_results.cpp
index 96c7d784ca..ec37818dea 100644
--- a/ydb/library/yql/providers/common/codec/yql_codec_results.cpp
+++ b/ydb/library/yql/providers/common/codec/yql_codec_results.cpp
@@ -1,25 +1,25 @@
-#include "yql_codec_results.h"
-
+#include "yql_codec_results.h"
+
#include <library/cpp/string_utils/base64/base64.h>
-
+
#include <ydb/library/yql/utils/utf8.h>
-
-namespace NYql {
-namespace NCommon {
-
-constexpr TStringBuf TYsonResultWriter::VoidString;
-
-void TYsonResultWriter::OnStringScalar(TStringBuf value) {
+
+namespace NYql {
+namespace NCommon {
+
+constexpr TStringBuf TYsonResultWriter::VoidString;
+
+void TYsonResultWriter::OnStringScalar(TStringBuf value) {
if (!IsUtf8(value)) {
- TString encoded = Base64Encode(value);
- Writer.OnBeginList();
+ TString encoded = Base64Encode(value);
+ Writer.OnBeginList();
Writer.OnListItem();
- Writer.OnStringScalar(TStringBuf(encoded));
- Writer.OnEndList();
- } else {
- Writer.OnStringScalar(value);
- }
-}
-
-}
-}
+ Writer.OnStringScalar(TStringBuf(encoded));
+ Writer.OnEndList();
+ } else {
+ Writer.OnStringScalar(value);
+ }
+}
+
+}
+}
diff --git a/ydb/library/yql/providers/common/codec/yql_codec_results.h b/ydb/library/yql/providers/common/codec/yql_codec_results.h
index e34d2a3a68..e2469474b9 100644
--- a/ydb/library/yql/providers/common/codec/yql_codec_results.h
+++ b/ydb/library/yql/providers/common/codec/yql_codec_results.h
@@ -1,21 +1,21 @@
-#pragma once
-
+#pragma once
+
#include <library/cpp/yson/writer.h>
-#include <util/generic/strbuf.h>
-#include <util/string/cast.h>
-
-namespace NYql {
-namespace NCommon {
-
-// we should not write numbers as numbers ever
-// write numbers as strings except Yson value where we use restricted dialect
+#include <util/generic/strbuf.h>
+#include <util/string/cast.h>
+
+namespace NYql {
+namespace NCommon {
+
+// we should not write numbers as numbers ever
+// write numbers as strings except Yson value where we use restricted dialect
// write bool as bool
-// write null as entity
-class TYsonResultWriter {
-public:
+// write null as entity
+class TYsonResultWriter {
+public:
static constexpr TStringBuf VoidString = "Void";
-
-public:
+
+public:
explicit TYsonResultWriter(NYson::TYsonConsumerBase& writer)
: Writer(writer)
{
@@ -37,7 +37,7 @@ public:
void OnEntity() {
Writer.OnEntity();
}
- // numbers
+ // numbers
void OnInt64Scalar(i64 value) {
WriteNumberAsString(value);
}
@@ -53,12 +53,12 @@ public:
void OnBooleanScalar(bool value) {
Writer.OnBooleanScalar(value);
}
- // strings
- void OnStringScalar(TStringBuf value);
+ // strings
+ void OnStringScalar(TStringBuf value);
void OnUtf8StringScalar(TStringBuf value) {
Writer.OnStringScalar(value);
}
- // list construction
+ // list construction
void OnBeginList() {
Writer.OnBeginList();
}
@@ -83,15 +83,15 @@ public:
void OnEndAttributes() {
Writer.OnEndAttributes();
}
-
-private:
- template <typename T>
- void WriteNumberAsString(T value) {
- Writer.OnStringScalar(::ToString(value));
- }
-
-private:
+
+private:
+ template <typename T>
+ void WriteNumberAsString(T value) {
+ Writer.OnStringScalar(::ToString(value));
+ }
+
+private:
NYson::TYsonConsumerBase& Writer;
-};
-}
-}
+};
+}
+}
diff --git a/ydb/library/yql/providers/common/codec/yql_restricted_yson.cpp b/ydb/library/yql/providers/common/codec/yql_restricted_yson.cpp
index 08b4521748..348aa0520f 100644
--- a/ydb/library/yql/providers/common/codec/yql_restricted_yson.cpp
+++ b/ydb/library/yql/providers/common/codec/yql_restricted_yson.cpp
@@ -1,326 +1,326 @@
-#include "yql_restricted_yson.h"
-
+#include "yql_restricted_yson.h"
+
#include <ydb/library/yql/utils/parse_double.h>
#include <ydb/library/yql/utils/yql_panic.h>
-
+
#include <library/cpp/yson/detail.h>
#include <library/cpp/yson/parser.h>
-
+
#include <library/cpp/yson/node/node_io.h>
#include <library/cpp/yson/node/node_visitor.h>
-
-#include <util/generic/algorithm.h>
-#include <util/generic/stack.h>
-
-namespace NYql {
-namespace NCommon {
-
-namespace {
+
+#include <util/generic/algorithm.h>
+#include <util/generic/stack.h>
+
+namespace NYql {
+namespace NCommon {
+
+namespace {
class TRestrictedYsonFormatter : public NYson::TYsonConsumerBase {
-public:
- TRestrictedYsonFormatter(TYsonResultWriter& writer)
- : Writer(writer) {
- }
-
+public:
+ TRestrictedYsonFormatter(TYsonResultWriter& writer)
+ : Writer(writer) {
+ }
+
void OnStringScalar(TStringBuf value) override {
- Open();
+ Open();
Type(TStringBuf("string"));
-
- Buffer.clear();
- bool isAscii = true;
+
+ Buffer.clear();
+ bool isAscii = true;
for (size_t i = 0; i < value.size(); ++i) {
- if (ui8(value[i]) < 128) {
- if (!isAscii) {
- Buffer.push_back(value[i]);
- }
- } else {
- if (isAscii) {
- Buffer.resize(i);
+ if (ui8(value[i]) < 128) {
+ if (!isAscii) {
+ Buffer.push_back(value[i]);
+ }
+ } else {
+ if (isAscii) {
+ Buffer.resize(i);
Copy(value.data(), value.data() + i, Buffer.data());
- isAscii = false;
- }
- Buffer.push_back('\xC0' | (ui8(value[i]) >> 6));
- Buffer.push_back('\x80' | (ui8(value[i]) & ~'\xC0'));
- }
- }
-
- if (isAscii) {
- Value(value);
- } else {
- Value(TStringBuf(Buffer.data(), Buffer.size()));
- }
-
- Close();
- }
-
- void OnInt64Scalar(i64 value) override {
- Open();
+ isAscii = false;
+ }
+ Buffer.push_back('\xC0' | (ui8(value[i]) >> 6));
+ Buffer.push_back('\x80' | (ui8(value[i]) & ~'\xC0'));
+ }
+ }
+
+ if (isAscii) {
+ Value(value);
+ } else {
+ Value(TStringBuf(Buffer.data(), Buffer.size()));
+ }
+
+ Close();
+ }
+
+ void OnInt64Scalar(i64 value) override {
+ Open();
Type(TStringBuf("int64"));
- Value(ToString(value));
- Close();
- }
-
- void OnUint64Scalar(ui64 value) override {
- Open();
+ Value(ToString(value));
+ Close();
+ }
+
+ void OnUint64Scalar(ui64 value) override {
+ Open();
Type(TStringBuf("uint64"));
- Value(ToString(value));
- Close();
- }
-
- void OnDoubleScalar(double value) override {
- Open();
+ Value(ToString(value));
+ Close();
+ }
+
+ void OnDoubleScalar(double value) override {
+ Open();
Type(TStringBuf("double"));
Value(::FloatToString(value));
- Close();
- }
-
- void OnBooleanScalar(bool value) override {
- Open();
+ Close();
+ }
+
+ void OnBooleanScalar(bool value) override {
+ Open();
Type(TStringBuf("boolean"));
Value(value ? TStringBuf("true") : TStringBuf("false"));
- Close();
- }
-
- void OnEntity() override {
- if (AfterAttributes) {
+ Close();
+ }
+
+ void OnEntity() override {
+ if (AfterAttributes) {
Writer.OnKeyedItem(TStringBuf("$value"));
- Writer.OnEntity();
- Writer.OnEndMap();
- AfterAttributes = false;
- } else {
- Writer.OnEntity();
- }
- }
-
- void OnBeginList() override {
- if (AfterAttributes) {
+ Writer.OnEntity();
+ Writer.OnEndMap();
+ AfterAttributes = false;
+ } else {
+ Writer.OnEntity();
+ }
+ }
+
+ void OnBeginList() override {
+ if (AfterAttributes) {
Writer.OnKeyedItem(TStringBuf("$value"));
- }
-
- Writer.OnBeginList();
- HasAttributes.push(AfterAttributes);
- AfterAttributes = false;
- }
-
- void OnListItem() override {
- Writer.OnListItem();
- }
-
- void OnEndList() override {
- Writer.OnEndList();
- if (HasAttributes.top()) {
- Writer.OnEndMap();
- }
-
- HasAttributes.pop();
- }
-
- void OnBeginMap() override {
- if (AfterAttributes) {
+ }
+
+ Writer.OnBeginList();
+ HasAttributes.push(AfterAttributes);
+ AfterAttributes = false;
+ }
+
+ void OnListItem() override {
+ Writer.OnListItem();
+ }
+
+ void OnEndList() override {
+ Writer.OnEndList();
+ if (HasAttributes.top()) {
+ Writer.OnEndMap();
+ }
+
+ HasAttributes.pop();
+ }
+
+ void OnBeginMap() override {
+ if (AfterAttributes) {
Writer.OnKeyedItem(TStringBuf("$value"));
- }
-
- Writer.OnBeginMap();
- HasAttributes.push(AfterAttributes);
- AfterAttributes = false;
- }
-
+ }
+
+ Writer.OnBeginMap();
+ HasAttributes.push(AfterAttributes);
+ AfterAttributes = false;
+ }
+
void OnKeyedItem(TStringBuf key) override {
- if (key.StartsWith('$')) {
- Writer.OnKeyedItem(TString("$") + key);
- } else {
- Writer.OnKeyedItem(key);
- }
- }
-
- void OnEndMap() override {
- Writer.OnEndMap();
- if (HasAttributes.top()) {
- Writer.OnEndMap();
- }
-
- HasAttributes.pop();
- }
-
- void OnBeginAttributes() override {
- Writer.OnBeginMap();
+ if (key.StartsWith('$')) {
+ Writer.OnKeyedItem(TString("$") + key);
+ } else {
+ Writer.OnKeyedItem(key);
+ }
+ }
+
+ void OnEndMap() override {
+ Writer.OnEndMap();
+ if (HasAttributes.top()) {
+ Writer.OnEndMap();
+ }
+
+ HasAttributes.pop();
+ }
+
+ void OnBeginAttributes() override {
+ Writer.OnBeginMap();
Writer.OnKeyedItem(TStringBuf("$attributes"));
- Writer.OnBeginMap();
- }
-
- void OnEndAttributes() override {
- Writer.OnEndMap();
- AfterAttributes = true;
- }
-
- void Open() {
- if (!AfterAttributes) {
- Writer.OnBeginMap();
- }
- }
-
- void Close() {
- Writer.OnEndMap();
- AfterAttributes = false;
- }
-
- void Type(const TStringBuf& type) {
+ Writer.OnBeginMap();
+ }
+
+ void OnEndAttributes() override {
+ Writer.OnEndMap();
+ AfterAttributes = true;
+ }
+
+ void Open() {
+ if (!AfterAttributes) {
+ Writer.OnBeginMap();
+ }
+ }
+
+ void Close() {
+ Writer.OnEndMap();
+ AfterAttributes = false;
+ }
+
+ void Type(const TStringBuf& type) {
Writer.OnKeyedItem(TStringBuf("$type"));
- Writer.OnUtf8StringScalar(type);
- }
-
- void Value(const TStringBuf& value) {
+ Writer.OnUtf8StringScalar(type);
+ }
+
+ void Value(const TStringBuf& value) {
Writer.OnKeyedItem(TStringBuf("$value"));
- Writer.OnUtf8StringScalar(value);
- }
-
-private:
- TYsonResultWriter& Writer;
- TStack<bool> HasAttributes;
- bool AfterAttributes = false;
- TVector<char> Buffer;
-};
-
-TString DecodeRestrictedBinaryString(const TString& data) {
- TString res;
+ Writer.OnUtf8StringScalar(value);
+ }
+
+private:
+ TYsonResultWriter& Writer;
+ TStack<bool> HasAttributes;
+ bool AfterAttributes = false;
+ TVector<char> Buffer;
+};
+
+TString DecodeRestrictedBinaryString(const TString& data) {
+ TString res;
for (size_t i = 0; i < data.size(); ++i) {
- char c = data[i];
- if (((unsigned char)c) >= 128) {
+ char c = data[i];
+ if (((unsigned char)c) >= 128) {
YQL_ENSURE(i + 1 < data.size());
- res.push_back(((c & 0x03) << 6) | (data[i + 1] & 0x3f));
- ++i;
- } else {
- res.push_back(c);
- }
- }
-
- return res;
-}
-
+ res.push_back(((c & 0x03) << 6) | (data[i + 1] & 0x3f));
+ ++i;
+ } else {
+ res.push_back(c);
+ }
+ }
+
+ return res;
+}
+
void DecodeRestrictedYson(const NYT::TNode& node, NYson::TYsonConsumerBase& writer) {
- switch (node.GetType()) {
- case NYT::TNode::String:
- writer.OnStringScalar(node.AsString());
- return;
-
- case NYT::TNode::Int64:
- writer.OnInt64Scalar(node.AsInt64());
- return;
-
- case NYT::TNode::Uint64:
- writer.OnUint64Scalar(node.AsUint64());
- return;
-
- case NYT::TNode::Bool:
- writer.OnBooleanScalar(node.AsBool());
- return;
-
- case NYT::TNode::Double:
- writer.OnDoubleScalar(node.AsDouble());
- return;
-
- case NYT::TNode::Null:
- writer.OnEntity();
- return;
-
- case NYT::TNode::List:
- // just a list without attributes
- writer.OnBeginList();
- for (const auto& item : node.AsList()) {
- writer.OnListItem();
- DecodeRestrictedYson(item, writer);
- }
-
- writer.OnEndList();
- return;
-
- case NYT::TNode::Map:
- // process below
- break;
-
- default:
- YQL_ENSURE(false, "Unsupported node type: " << static_cast<int>(node.GetType()));
- }
-
- YQL_ENSURE(node.IsMap());
- if (!node.HasKey("$value")) {
- // just a map without attributes
- writer.OnBeginMap();
- for (const auto& x : node.AsMap()) {
- if (x.first.StartsWith("$$")) {
- writer.OnKeyedItem(x.first.substr(1));
- } else {
- writer.OnKeyedItem(x.first);
- }
-
- DecodeRestrictedYson(x.second, writer);
- }
-
- writer.OnEndMap();
- return;
- }
-
- if (node.HasKey("$attributes")) {
- writer.OnBeginAttributes();
- for (const auto& x : node["$attributes"].AsMap()) {
- if (x.first.StartsWith("$$")) {
- writer.OnKeyedItem(x.first.substr(1));
- } else {
- writer.OnKeyedItem(x.first);
- }
-
- DecodeRestrictedYson(x.second, writer);
- }
-
- writer.OnEndAttributes();
- }
-
- if (!node.HasKey("$type")) {
- // non-scalars with attributes
- DecodeRestrictedYson(node["$value"], writer);
- return;
- }
-
- auto type = node["$type"].AsString();
- if (type == "int64") {
- writer.OnInt64Scalar(FromString<i64>(node["$value"].AsString()));
- } else if (type == "uint64") {
- writer.OnUint64Scalar(FromString<ui64>(node["$value"].AsString()));
- } else if (type == "double") {
- writer.OnDoubleScalar(DoubleFromString(TStringBuf(node["$value"].AsString())));
- } else if (type == "boolean") {
- writer.OnBooleanScalar(FromString<bool>(node["$value"].AsString()));
- } else if (type == "string") {
- writer.OnStringScalar(DecodeRestrictedBinaryString(node["$value"].AsString()));
- } else {
- YQL_ENSURE(false, "Unsupported type: " << type);
- }
-}
-
-} // anonymous namespace
-
-void EncodeRestrictedYson(TYsonResultWriter& writer, const TStringBuf& yson) {
- TRestrictedYsonFormatter formatter(writer);
+ switch (node.GetType()) {
+ case NYT::TNode::String:
+ writer.OnStringScalar(node.AsString());
+ return;
+
+ case NYT::TNode::Int64:
+ writer.OnInt64Scalar(node.AsInt64());
+ return;
+
+ case NYT::TNode::Uint64:
+ writer.OnUint64Scalar(node.AsUint64());
+ return;
+
+ case NYT::TNode::Bool:
+ writer.OnBooleanScalar(node.AsBool());
+ return;
+
+ case NYT::TNode::Double:
+ writer.OnDoubleScalar(node.AsDouble());
+ return;
+
+ case NYT::TNode::Null:
+ writer.OnEntity();
+ return;
+
+ case NYT::TNode::List:
+ // just a list without attributes
+ writer.OnBeginList();
+ for (const auto& item : node.AsList()) {
+ writer.OnListItem();
+ DecodeRestrictedYson(item, writer);
+ }
+
+ writer.OnEndList();
+ return;
+
+ case NYT::TNode::Map:
+ // process below
+ break;
+
+ default:
+ YQL_ENSURE(false, "Unsupported node type: " << static_cast<int>(node.GetType()));
+ }
+
+ YQL_ENSURE(node.IsMap());
+ if (!node.HasKey("$value")) {
+ // just a map without attributes
+ writer.OnBeginMap();
+ for (const auto& x : node.AsMap()) {
+ if (x.first.StartsWith("$$")) {
+ writer.OnKeyedItem(x.first.substr(1));
+ } else {
+ writer.OnKeyedItem(x.first);
+ }
+
+ DecodeRestrictedYson(x.second, writer);
+ }
+
+ writer.OnEndMap();
+ return;
+ }
+
+ if (node.HasKey("$attributes")) {
+ writer.OnBeginAttributes();
+ for (const auto& x : node["$attributes"].AsMap()) {
+ if (x.first.StartsWith("$$")) {
+ writer.OnKeyedItem(x.first.substr(1));
+ } else {
+ writer.OnKeyedItem(x.first);
+ }
+
+ DecodeRestrictedYson(x.second, writer);
+ }
+
+ writer.OnEndAttributes();
+ }
+
+ if (!node.HasKey("$type")) {
+ // non-scalars with attributes
+ DecodeRestrictedYson(node["$value"], writer);
+ return;
+ }
+
+ auto type = node["$type"].AsString();
+ if (type == "int64") {
+ writer.OnInt64Scalar(FromString<i64>(node["$value"].AsString()));
+ } else if (type == "uint64") {
+ writer.OnUint64Scalar(FromString<ui64>(node["$value"].AsString()));
+ } else if (type == "double") {
+ writer.OnDoubleScalar(DoubleFromString(TStringBuf(node["$value"].AsString())));
+ } else if (type == "boolean") {
+ writer.OnBooleanScalar(FromString<bool>(node["$value"].AsString()));
+ } else if (type == "string") {
+ writer.OnStringScalar(DecodeRestrictedBinaryString(node["$value"].AsString()));
+ } else {
+ YQL_ENSURE(false, "Unsupported type: " << type);
+ }
+}
+
+} // anonymous namespace
+
+void EncodeRestrictedYson(TYsonResultWriter& writer, const TStringBuf& yson) {
+ TRestrictedYsonFormatter formatter(writer);
NYson::ParseYsonStringBuffer(yson, &formatter);
-}
-
+}
+
TString EncodeRestrictedYson(const NYT::TNode& node, NYson::EYsonFormat format) {
- TStringStream stream;
+ TStringStream stream;
NYson::TYsonWriter writer(&stream, format);
- TYsonResultWriter resultWriter(writer);
- TRestrictedYsonFormatter formatter(resultWriter);
- NYT::TNodeVisitor visitor(&formatter);
- visitor.Visit(node);
- return stream.Str();
-}
-
+ TYsonResultWriter resultWriter(writer);
+ TRestrictedYsonFormatter formatter(resultWriter);
+ NYT::TNodeVisitor visitor(&formatter);
+ visitor.Visit(node);
+ return stream.Str();
+}
+
TString DecodeRestrictedYson(const TStringBuf& yson, NYson::EYsonFormat format) {
- TStringStream stream;
+ TStringStream stream;
NYson::TYsonWriter writer(&stream, format);
- auto node = NYT::NodeFromYsonString(yson);
- DecodeRestrictedYson(node, writer);
- return stream.Str();
-}
-
-}
-}
+ auto node = NYT::NodeFromYsonString(yson);
+ DecodeRestrictedYson(node, writer);
+ return stream.Str();
+}
+
+}
+}
diff --git a/ydb/library/yql/providers/common/codec/yql_restricted_yson.h b/ydb/library/yql/providers/common/codec/yql_restricted_yson.h
index 0d0f7568d6..d20cce63a2 100644
--- a/ydb/library/yql/providers/common/codec/yql_restricted_yson.h
+++ b/ydb/library/yql/providers/common/codec/yql_restricted_yson.h
@@ -1,28 +1,28 @@
-#pragma once
-
-#include "yql_codec_results.h"
-
-#include <util/generic/strbuf.h>
+#pragma once
+
+#include "yql_codec_results.h"
+
+#include <util/generic/strbuf.h>
#include <library/cpp/yson/public.h>
-
+
namespace NYT {
class TNode;
}
-namespace NYql {
-namespace NCommon {
-
-void EncodeRestrictedYson(
- TYsonResultWriter& writer,
- const TStringBuf& yson);
-
-TString EncodeRestrictedYson(
- const NYT::TNode& node,
+namespace NYql {
+namespace NCommon {
+
+void EncodeRestrictedYson(
+ TYsonResultWriter& writer,
+ const TStringBuf& yson);
+
+TString EncodeRestrictedYson(
+ const NYT::TNode& node,
NYson::EYsonFormat format = NYson::EYsonFormat::Binary);
-
-TString DecodeRestrictedYson(
- const TStringBuf& yson,
+
+TString DecodeRestrictedYson(
+ const TStringBuf& yson,
NYson::EYsonFormat format = NYson::EYsonFormat::Binary);
-
-}
-}
+
+}
+}
diff --git a/ydb/library/yql/providers/common/codec/yql_restricted_yson_ut.cpp b/ydb/library/yql/providers/common/codec/yql_restricted_yson_ut.cpp
index aee6715a93..a8714758ca 100644
--- a/ydb/library/yql/providers/common/codec/yql_restricted_yson_ut.cpp
+++ b/ydb/library/yql/providers/common/codec/yql_restricted_yson_ut.cpp
@@ -1,95 +1,95 @@
-#include "yql_restricted_yson.h"
-
+#include "yql_restricted_yson.h"
+
#include <library/cpp/yson/node/node_io.h>
#include <library/cpp/yson/node/node_visitor.h>
-
+
#include <library/cpp/testing/unittest/registar.h>
-
-namespace NYql {
-
-namespace {
-TString FormatNode(const NYT::TNode& node) {
- TStringStream stream;
+
+namespace NYql {
+
+namespace {
+TString FormatNode(const NYT::TNode& node) {
+ TStringStream stream;
NYson::TYsonWriter writer(&stream, NYson::EYsonFormat::Text);
- const auto sortMapKeys = true;
- NYT::TNodeVisitor visitor(&writer, sortMapKeys);
- visitor.Visit(node);
- return stream.Str();
-}
-
-// reformat yson and sort keys
-TString Normalize(const TString& yson) {
- return FormatNode(NYT::NodeFromYsonString(yson));
-}
-
-}
-
-Y_UNIT_TEST_SUITE(TRestrictedYson) {
- void RunTest(const NYT::TNode& node, const TString& expectedNodeStr, const TString& expectedEncodedStr) {
- UNIT_ASSERT_VALUES_EQUAL(FormatNode(node), expectedNodeStr);
+ const auto sortMapKeys = true;
+ NYT::TNodeVisitor visitor(&writer, sortMapKeys);
+ visitor.Visit(node);
+ return stream.Str();
+}
+
+// reformat yson and sort keys
+TString Normalize(const TString& yson) {
+ return FormatNode(NYT::NodeFromYsonString(yson));
+}
+
+}
+
+Y_UNIT_TEST_SUITE(TRestrictedYson) {
+ void RunTest(const NYT::TNode& node, const TString& expectedNodeStr, const TString& expectedEncodedStr) {
+ UNIT_ASSERT_VALUES_EQUAL(FormatNode(node), expectedNodeStr);
TString encoded = NCommon::EncodeRestrictedYson(node, NYson::EYsonFormat::Text);
- UNIT_ASSERT_VALUES_EQUAL(Normalize(encoded), expectedEncodedStr);
+ UNIT_ASSERT_VALUES_EQUAL(Normalize(encoded), expectedEncodedStr);
TString decoded = NCommon::DecodeRestrictedYson(TStringBuf(encoded), NYson::EYsonFormat::Text);
- UNIT_ASSERT_VALUES_EQUAL(FormatNode(node), Normalize(decoded));
- }
-
- Y_UNIT_TEST(MapScalars) {
- NYT::TNode node = NYT::TNode::CreateMap();
- node["a"] = NYT::TNode("abc");
- node["b"] = NYT::TNode::CreateEntity();
- node["c"] = NYT::TNode(true);
- node["d"] = NYT::TNode(1);
- node["e"] = NYT::TNode(1u);
- node["f"] = NYT::TNode(1.25);
-
- RunTest(node,
- R"({"a"="abc";"b"=#;"c"=%true;"d"=1;"e"=1u;"f"=1.25})",
- R"({"a"={"$type"="string";"$value"="abc"};"b"=#;"c"={"$type"="boolean";"$value"="true"};"d"={"$type"="int64";"$value"="1"};"e"={"$type"="uint64";"$value"="1"};"f"={"$type"="double";"$value"="1.25"}})"
- );
- }
-
- Y_UNIT_TEST(ScalarWithAttributes) {
- NYT::TNode node("abc");
- node.Attributes()["d"] = NYT::TNode(true);
-
- RunTest(node,
- R"(<"d"=%true>"abc")",
- R"({"$attributes"={"d"={"$type"="boolean";"$value"="true"}};"$type"="string";"$value"="abc"})"
- );
- }
-
- Y_UNIT_TEST(MapWithAttributes) {
- NYT::TNode node = NYT::TNode::CreateMap();
- node["b"] = NYT::TNode::CreateEntity();
- node["c"] = NYT::TNode(false);
- node.Attributes()["d"] = NYT::TNode(true);
-
- RunTest(node,
- R"(<"d"=%true>{"b"=#;"c"=%false})",
- R"({"$attributes"={"d"={"$type"="boolean";"$value"="true"}};"$value"={"b"=#;"c"={"$type"="boolean";"$value"="false"}}})"
- );
- }
-
- Y_UNIT_TEST(ListWithAttributes) {
- NYT::TNode node = NYT::TNode::CreateList();
- node.Add(NYT::TNode::CreateEntity());
- node.Add(NYT::TNode(false));
- node.Attributes()["d"] = NYT::TNode(true);
-
- RunTest(node,
- R"(<"d"=%true>[#;%false])",
- R"({"$attributes"={"d"={"$type"="boolean";"$value"="true"}};"$value"=[#;{"$type"="boolean";"$value"="false"}]})"
- );
- }
-
- Y_UNIT_TEST(EntityWithAttributes) {
- NYT::TNode node = NYT::TNode::CreateEntity();
- node.Attributes()["d"] = NYT::TNode(true);
-
- RunTest(node,
- R"(<"d"=%true>#)",
- R"({"$attributes"={"d"={"$type"="boolean";"$value"="true"}};"$value"=#})"
- );
- }
-}
-}
+ UNIT_ASSERT_VALUES_EQUAL(FormatNode(node), Normalize(decoded));
+ }
+
+ Y_UNIT_TEST(MapScalars) {
+ NYT::TNode node = NYT::TNode::CreateMap();
+ node["a"] = NYT::TNode("abc");
+ node["b"] = NYT::TNode::CreateEntity();
+ node["c"] = NYT::TNode(true);
+ node["d"] = NYT::TNode(1);
+ node["e"] = NYT::TNode(1u);
+ node["f"] = NYT::TNode(1.25);
+
+ RunTest(node,
+ R"({"a"="abc";"b"=#;"c"=%true;"d"=1;"e"=1u;"f"=1.25})",
+ R"({"a"={"$type"="string";"$value"="abc"};"b"=#;"c"={"$type"="boolean";"$value"="true"};"d"={"$type"="int64";"$value"="1"};"e"={"$type"="uint64";"$value"="1"};"f"={"$type"="double";"$value"="1.25"}})"
+ );
+ }
+
+ Y_UNIT_TEST(ScalarWithAttributes) {
+ NYT::TNode node("abc");
+ node.Attributes()["d"] = NYT::TNode(true);
+
+ RunTest(node,
+ R"(<"d"=%true>"abc")",
+ R"({"$attributes"={"d"={"$type"="boolean";"$value"="true"}};"$type"="string";"$value"="abc"})"
+ );
+ }
+
+ Y_UNIT_TEST(MapWithAttributes) {
+ NYT::TNode node = NYT::TNode::CreateMap();
+ node["b"] = NYT::TNode::CreateEntity();
+ node["c"] = NYT::TNode(false);
+ node.Attributes()["d"] = NYT::TNode(true);
+
+ RunTest(node,
+ R"(<"d"=%true>{"b"=#;"c"=%false})",
+ R"({"$attributes"={"d"={"$type"="boolean";"$value"="true"}};"$value"={"b"=#;"c"={"$type"="boolean";"$value"="false"}}})"
+ );
+ }
+
+ Y_UNIT_TEST(ListWithAttributes) {
+ NYT::TNode node = NYT::TNode::CreateList();
+ node.Add(NYT::TNode::CreateEntity());
+ node.Add(NYT::TNode(false));
+ node.Attributes()["d"] = NYT::TNode(true);
+
+ RunTest(node,
+ R"(<"d"=%true>[#;%false])",
+ R"({"$attributes"={"d"={"$type"="boolean";"$value"="true"}};"$value"=[#;{"$type"="boolean";"$value"="false"}]})"
+ );
+ }
+
+ Y_UNIT_TEST(EntityWithAttributes) {
+ NYT::TNode node = NYT::TNode::CreateEntity();
+ node.Attributes()["d"] = NYT::TNode(true);
+
+ RunTest(node,
+ R"(<"d"=%true>#)",
+ R"({"$attributes"={"d"={"$type"="boolean";"$value"="true"}};"$value"=#})"
+ );
+ }
+}
+}
diff --git a/ydb/library/yql/providers/common/config/yql_dispatch.cpp b/ydb/library/yql/providers/common/config/yql_dispatch.cpp
index 4e6df45a8f..f6701862bb 100644
--- a/ydb/library/yql/providers/common/config/yql_dispatch.cpp
+++ b/ydb/library/yql/providers/common/config/yql_dispatch.cpp
@@ -129,11 +129,11 @@ bool TSettingDispatcher::Dispatch(const TString& cluster, const TString& name, c
handler->Handle(cluster, value, validateOnly);
return !validateOnly;
} else {
- // ignore unknown names in config
- if (stage == EStage::CONFIG) {
- return false;
- }
-
+ // ignore unknown names in config
+ if (stage == EStage::CONFIG) {
+ return false;
+ }
+
TStringBuilder nearHandlerMsg;
for (auto& item: Handlers) {
if (NLevenshtein::Distance(normalizedName, item.first) < DefaultMistypeDistance) {
diff --git a/ydb/library/yql/providers/common/http_gateway/ya.make b/ydb/library/yql/providers/common/http_gateway/ya.make
index f53489973e..d4c9926dd8 100644
--- a/ydb/library/yql/providers/common/http_gateway/ya.make
+++ b/ydb/library/yql/providers/common/http_gateway/ya.make
@@ -1,7 +1,7 @@
LIBRARY()
OWNER(
- g:yq
+ g:yq
g:yql
)
diff --git a/ydb/library/yql/providers/common/metrics/metrics_registry.cpp b/ydb/library/yql/providers/common/metrics/metrics_registry.cpp
index 1fb7bdcbba..d568188a81 100644
--- a/ydb/library/yql/providers/common/metrics/metrics_registry.cpp
+++ b/ydb/library/yql/providers/common/metrics/metrics_registry.cpp
@@ -106,29 +106,29 @@ public:
{
}
- void SetCounter(
- const TString& labelName,
- const TString& labelValue,
- i64 value,
- bool derivative) override
- {
- if (UserName_) {
- // per user counter
- auto userCnt = GetCounter(labelName, labelValue, UserName_.Get(),
- derivative);
- if (userCnt) {
- *userCnt = value;
- }
-
- return;
- }
-
- auto totalCnt = GetCounter(labelName, labelValue, nullptr, derivative);
- if (totalCnt) {
- *totalCnt = value;
- }
- }
-
+ void SetCounter(
+ const TString& labelName,
+ const TString& labelValue,
+ i64 value,
+ bool derivative) override
+ {
+ if (UserName_) {
+ // per user counter
+ auto userCnt = GetCounter(labelName, labelValue, UserName_.Get(),
+ derivative);
+ if (userCnt) {
+ *userCnt = value;
+ }
+
+ return;
+ }
+
+ auto totalCnt = GetCounter(labelName, labelValue, nullptr, derivative);
+ if (totalCnt) {
+ *totalCnt = value;
+ }
+ }
+
void IncCounter(
const TString& labelName,
const TString& labelValue,
diff --git a/ydb/library/yql/providers/common/metrics/metrics_registry.h b/ydb/library/yql/providers/common/metrics/metrics_registry.h
index d344ba9dd9..70d1c4bc12 100644
--- a/ydb/library/yql/providers/common/metrics/metrics_registry.h
+++ b/ydb/library/yql/providers/common/metrics/metrics_registry.h
@@ -21,12 +21,12 @@ using TMetricsDecorator = std::function<IMetricsRegistryPtr(
//////////////////////////////////////////////////////////////////////////////
struct IMetricsRegistry: public TThrRefBase {
- virtual void SetCounter(
- const TString& labelName,
- const TString& labelValue,
- i64 value,
- bool derivative = false) = 0;
-
+ virtual void SetCounter(
+ const TString& labelName,
+ const TString& labelValue,
+ i64 value,
+ bool derivative = false) = 0;
+
virtual void IncCounter(
const TString& labelName,
const TString& labelValue,
diff --git a/ydb/library/yql/providers/common/proto/gateways_config.proto b/ydb/library/yql/providers/common/proto/gateways_config.proto
index 8561fe2536..7e86cc8bd7 100644
--- a/ydb/library/yql/providers/common/proto/gateways_config.proto
+++ b/ydb/library/yql/providers/common/proto/gateways_config.proto
@@ -38,11 +38,11 @@ enum EYtLogLevel {
YL_DEBUG = 3;
};
-enum EHostScheme {
- HS_HTTP = 0;
- HS_HTTPS = 1;
-};
-
+enum EHostScheme {
+ HS_HTTP = 0;
+ HS_HTTPS = 1;
+};
+
enum ETokenType {
IAM = 0;
OAUTH = 1;
@@ -114,9 +114,9 @@ message TKikimrClusterConfig {
optional string Database = 5;
optional uint32 TvmId = 6 [default = 0];
optional string Token = 7;
- optional string ProxyUrl = 8;
- optional string Location = 9;
- optional bool IsFromMvp = 10;
+ optional string ProxyUrl = 8;
+ optional string Location = 9;
+ optional bool IsFromMvp = 10;
optional ETokenType TokenType = 11;
repeated TAttr Settings = 101;
}
@@ -150,9 +150,9 @@ message TYdbClusterConfig {
optional string Database = 6;
optional string Id = 7;
optional bool Secure = 8;
- optional string ServiceAccountId = 9;
- optional string ServiceAccountIdSignature = 10;
- optional bool AddBearerToToken = 11; // whether to use prefix "Bearer " in token
+ optional string ServiceAccountId = 9;
+ optional string ServiceAccountIdSignature = 10;
+ optional bool AddBearerToToken = 11; // whether to use prefix "Bearer " in token
repeated TAttr Settings = 100;
}
@@ -171,11 +171,11 @@ message TClickHouseClusterConfig {
optional string Cluster = 3;
optional string CHToken = 4;
repeated TAttr Settings = 101;
- optional EHostScheme HostScheme = 5;
- optional uint32 HostPort = 6;
- optional string CHTokenYavSecretId = 7;
- optional string CHTokenYavVersionId = 8;
- optional string CHTokenYavKey = 9;
+ optional EHostScheme HostScheme = 5;
+ optional uint32 HostPort = 6;
+ optional string CHTokenYavSecretId = 7;
+ optional string CHTokenYavVersionId = 8;
+ optional string CHTokenYavKey = 9;
optional NYql.NProto.TClickHouseRunnerConfig Runner = 10;
optional uint32 NativeHostPort = 11 [default = 9000];
optional bool NativeSecure = 12 [default = false];
@@ -188,36 +188,36 @@ message TClickHouseGatewayConfig {
}
///////////////////////////// RTMR /////////////////////////////
-enum EYfArtifactType {
- AT_NONE = 0;
- AT_FILE = 1;
- AT_LAYER = 2;
-};
-
-enum ERtmrOperationType {
- OT_NONE = 0;
- OT_LF_PARSE = 1;
- OT_YDB_OUT = 2;
- OT_SOLOMON_OUT = 3;
- OT_PQ_OUT = 4;
-};
-
-message TYfArtifactLink {
- optional EYfArtifactType Type = 1;
- optional string Url = 2; // in any format suitable for file storage
- optional string TargetFilePath = 3; // ignored for Type=AT_LAYER
-};
-
-message TRtmrOperationArtifactsInfo {
- optional ERtmrOperationType Type = 1;
- repeated TYfArtifactLink Links = 2;
-};
-
-message TRtmrPqConsumerInfo {
- optional string Cluster = 1;
- optional string Consumer = 2;
-}
-
+enum EYfArtifactType {
+ AT_NONE = 0;
+ AT_FILE = 1;
+ AT_LAYER = 2;
+};
+
+enum ERtmrOperationType {
+ OT_NONE = 0;
+ OT_LF_PARSE = 1;
+ OT_YDB_OUT = 2;
+ OT_SOLOMON_OUT = 3;
+ OT_PQ_OUT = 4;
+};
+
+message TYfArtifactLink {
+ optional EYfArtifactType Type = 1;
+ optional string Url = 2; // in any format suitable for file storage
+ optional string TargetFilePath = 3; // ignored for Type=AT_LAYER
+};
+
+message TRtmrOperationArtifactsInfo {
+ optional ERtmrOperationType Type = 1;
+ repeated TYfArtifactLink Links = 2;
+};
+
+message TRtmrPqConsumerInfo {
+ optional string Cluster = 1;
+ optional string Consumer = 2;
+}
+
message TRtmrClusterConfig {
optional string Name = 1;
optional bool Default = 2 [default = false];
@@ -228,14 +228,14 @@ message TRtmrClusterConfig {
optional string S3FileCachePath = 7;
optional uint32 TvmId = 8 [default = 0];
optional string TvmSecretPath = 9;
- repeated string Users = 10;
- optional bool UploadViaYfClient = 11 [default = false];
- optional string MdsTorrentUrl = 12;
- repeated TRtmrOperationArtifactsInfo ArtifactOverrides = 13; // override CommonArtifacts by ERtmrOperationType
- optional string PqConsumer = 14;
- repeated TRtmrPqConsumerInfo PqConsumerMapping = 15;
- optional uint32 MaxPqPartitions = 16;
- optional uint32 PreviewCollectTimeoutMs = 17;
+ repeated string Users = 10;
+ optional bool UploadViaYfClient = 11 [default = false];
+ optional string MdsTorrentUrl = 12;
+ repeated TRtmrOperationArtifactsInfo ArtifactOverrides = 13; // override CommonArtifacts by ERtmrOperationType
+ optional string PqConsumer = 14;
+ repeated TRtmrPqConsumerInfo PqConsumerMapping = 15;
+ optional uint32 MaxPqPartitions = 16;
+ optional uint32 PreviewCollectTimeoutMs = 17;
repeated TAttr Settings = 101;
}
@@ -243,33 +243,33 @@ message TRtmrGatewayConfig {
repeated TRtmrClusterConfig ClusterMapping = 1;
repeated TAttr DefaultSettings = 2;
optional string YqlRtmrDynLib = 3; // path to libyql-dynlib.so
- optional bool UseFakeYfUpload = 4 [default = false]; // use in tests only to speedup upload
+ optional bool UseFakeYfUpload = 4 [default = false]; // use in tests only to speedup upload
repeated string Artifacts = 5; /// default artifacts to put into every function
- repeated TRtmrOperationArtifactsInfo CommonArtifacts = 6; // common artifacts for all clusters
- optional uint32 MaxPqPartitions = 7 [default = 10];
- optional uint32 PreviewCollectTimeoutMs = 8 [default = 2000];
+ repeated TRtmrOperationArtifactsInfo CommonArtifacts = 6; // common artifacts for all clusters
+ optional uint32 MaxPqPartitions = 7 [default = 10];
+ optional uint32 PreviewCollectTimeoutMs = 8 [default = 2000];
}
///////////////////////////// Pq //////////////////////////////
message TPqClusterConfig {
enum EClusterType {
- CT_UNSPECIFIED = 0;
- CT_PERS_QUEUE = 1;
- CT_DATA_STREAMS = 2;
+ CT_UNSPECIFIED = 0;
+ CT_PERS_QUEUE = 1;
+ CT_DATA_STREAMS = 2;
}
optional string Name = 1;
- optional EClusterType ClusterType = 2 [default = CT_PERS_QUEUE];
+ optional EClusterType ClusterType = 2 [default = CT_PERS_QUEUE];
optional string Endpoint = 3;
optional string ConfigManagerEndpoint = 4;
optional string Token = 5;
optional string Database = 6 [default = "/Root"];
optional uint32 TvmId = 7 [default = 0];
optional bool UseSsl = 8; // grpcs
- optional string ServiceAccountId = 9;
- optional string ServiceAccountIdSignature = 10;
- optional bool AddBearerToToken = 11; // whether to use prefix "Bearer " in token
+ optional string ServiceAccountId = 9;
+ optional string ServiceAccountIdSignature = 10;
+ optional bool AddBearerToToken = 11; // whether to use prefix "Bearer " in token
optional string DatabaseId = 12;
repeated TAttr Settings = 100;
}
@@ -316,8 +316,8 @@ message TS3ClusterConfig {
optional string Name = 1; // Short cluster name
optional string Url = 2;
optional string Token = 3;
- optional string ServiceAccountId = 4;
- optional string ServiceAccountIdSignature = 5;
+ optional string ServiceAccountId = 4;
+ optional string ServiceAccountIdSignature = 5;
repeated TAttr Settings = 100;
}
@@ -347,11 +347,11 @@ message TSolomonClusterConfig {
optional string Name = 1;
optional string Cluster = 2;
- optional bool UseSsl = 3;
+ optional bool UseSsl = 3;
optional ESolomonClusterType ClusterType = 4 [default = SCT_SOLOMON];
- optional string Token = 5;
- optional string ServiceAccountId = 6;
- optional string ServiceAccountIdSignature = 7;
+ optional string Token = 5;
+ optional string ServiceAccountId = 6;
+ optional string ServiceAccountIdSignature = 7;
optional TShardPath Path = 8;
repeated TAttr Settings = 100;
@@ -362,10 +362,10 @@ message TSolomonGatewayConfig {
repeated TAttr DefaultSettings = 2;
}
-message TFileStorageAdditionalConfig {
- repeated string AllowedUrlPatterns = 1;
-}
-
+message TFileStorageAdditionalConfig {
+ repeated string AllowedUrlPatterns = 1;
+}
+
/////////////////////////////// Postgresql /////////////////////////////
message TPostgresqlClusterConfig {
@@ -444,7 +444,7 @@ message TGatewaysConfig {
optional TStatGatewayConfig Stat = 6;
optional TChytGatewayConfig Chyt = 7;
optional TSolomonGatewayConfig Solomon = 8;
- optional TFileStorageAdditionalConfig Fs = 9;
+ optional TFileStorageAdditionalConfig Fs = 9;
optional TYqlCoreConfig YqlCore = 10;
optional TPostgresqlGatewayConfig Postgresql = 11;
optional TSqlCoreConfig SqlCore = 12;
diff --git a/ydb/library/yql/providers/common/proto/udf_resolver.proto b/ydb/library/yql/providers/common/proto/udf_resolver.proto
index 170d13e6d7..e949e714e4 100644
--- a/ydb/library/yql/providers/common/proto/udf_resolver.proto
+++ b/ydb/library/yql/providers/common/proto/udf_resolver.proto
@@ -1,5 +1,5 @@
package NYql;
-option java_package = "ru.yandex.yql.proto";
+option java_package = "ru.yandex.yql.proto";
message TFunction {
required string Name = 1;
@@ -7,26 +7,26 @@ message TFunction {
optional string UserType = 3;
};
-message TArgResult {
- required string Name = 1;
- required string Type = 2;
- required string Doc = 3;
- required uint32 Flags = 4;
-};
-
+message TArgResult {
+ required string Name = 1;
+ required string Type = 2;
+ required string Doc = 3;
+ required uint32 Flags = 4;
+};
+
message TFunctionResult {
optional string NormalizedUserType = 1;
optional string RunConfigType = 2;
optional string CallableType = 3;
optional string Error = 4;
- optional string Name = 5;
- optional string Doc = 7;
- optional bool IsTypeAwareness = 8;
- optional uint32 ArgCount = 9;
- optional uint32 OptionalArgCount = 10;
- repeated TArgResult Args = 11;
- optional string ReturnType = 12;
- optional string ReturnDoc = 13;
+ optional string Name = 5;
+ optional string Doc = 7;
+ optional bool IsTypeAwareness = 8;
+ optional uint32 ArgCount = 9;
+ optional uint32 OptionalArgCount = 10;
+ repeated TArgResult Args = 11;
+ optional string ReturnType = 12;
+ optional string ReturnDoc = 13;
};
message TImport {
@@ -39,8 +39,8 @@ message TImportResult {
required string FileAlias = 1;
repeated string Modules = 2;
optional string Error = 3;
- optional uint64 FileSize = 4;
- optional string Md5 = 5;
+ optional uint64 FileSize = 4;
+ optional string Md5 = 5;
};
message TResolve {
diff --git a/ydb/library/yql/providers/common/provider/yql_provider.cpp b/ydb/library/yql/providers/common/provider/yql_provider.cpp
index aa782ee93f..8a2d83cca4 100644
--- a/ydb/library/yql/providers/common/provider/yql_provider.cpp
+++ b/ydb/library/yql/providers/common/provider/yql_provider.cpp
@@ -432,26 +432,26 @@ bool FillUsedFilesImpl(
if (node.IsCallable("FilePath") || node.IsCallable("FileContent")) {
const auto& name = node.Head().Content();
- const auto block = types.UserDataStorage->FindUserDataBlock(name);
+ const auto block = types.UserDataStorage->FindUserDataBlock(name);
if (!block) {
ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() << "File not found: " << name));
return false;
}
else {
- auto iter = files.insert({ TUserDataStorage::ComposeUserDataKey(name), *block }).first;
+ auto iter = files.insert({ TUserDataStorage::ComposeUserDataKey(name), *block }).first;
iter->second.Usage.Set(node.IsCallable("FilePath") ? EUserDataBlockUsage::Path : EUserDataBlockUsage::Content);
}
}
if (node.IsCallable("FolderPath")) {
const auto& name = node.Head().Content();
- auto blocks = types.UserDataStorage->FindUserDataFolder(name);
+ auto blocks = types.UserDataStorage->FindUserDataFolder(name);
if (!blocks) {
ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() << "Folder not found: " << name));
return false;
} else {
for (const auto& x : *blocks) {
- auto iter = files.insert({ x.first, *x.second }).first;
+ auto iter = files.insert({ x.first, *x.second }).first;
iter->second.Usage.Set(EUserDataBlockUsage::Path);
}
}
@@ -508,32 +508,32 @@ bool FillUsedFilesImpl(
}
if (addSysModule) {
- auto pathWithMd5 = types.UdfResolver->GetSystemModulePath(moduleName);
- YQL_ENSURE(pathWithMd5);
+ auto pathWithMd5 = types.UdfResolver->GetSystemModulePath(moduleName);
+ YQL_ENSURE(pathWithMd5);
TUserDataBlock sysBlock;
sysBlock.Type = EUserDataType::PATH;
- sysBlock.Data = pathWithMd5->Path;
- sysBlock.Usage.Set(EUserDataBlockUsage::Udf);
-
- auto alias = TFsPath(sysBlock.Data).GetName();
- auto key = TUserDataKey::Udf(alias);
- if (const auto block = types.UserDataStorage->FindUserDataBlock(key)) {
- files[key] = *block;
- YQL_ENSURE(block->FrozenFile);
- } else {
- // Check alias clash with user files
- if (files.contains(TUserDataStorage::ComposeUserDataKey(alias))) {
- ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() << "System module name " << alias << " clashes with one of the user's files"));
- return false;
- }
-
- if (!alias.StartsWith(NKikimr::NMiniKQL::StaticModulePrefix) && !files.contains(key)) {
- // CreateFakeFileLink calculates md5 for file, let's do it once
- sysBlock.FrozenFile = CreateFakeFileLink(sysBlock.Data, pathWithMd5->Md5);
- files[key] = sysBlock;
- types.UserDataStorage->AddUserDataBlock(key, sysBlock);
- }
- }
+ sysBlock.Data = pathWithMd5->Path;
+ sysBlock.Usage.Set(EUserDataBlockUsage::Udf);
+
+ auto alias = TFsPath(sysBlock.Data).GetName();
+ auto key = TUserDataKey::Udf(alias);
+ if (const auto block = types.UserDataStorage->FindUserDataBlock(key)) {
+ files[key] = *block;
+ YQL_ENSURE(block->FrozenFile);
+ } else {
+ // Check alias clash with user files
+ if (files.contains(TUserDataStorage::ComposeUserDataKey(alias))) {
+ ctx.AddError(TIssue(ctx.GetPosition(node.Pos()), TStringBuilder() << "System module name " << alias << " clashes with one of the user's files"));
+ return false;
+ }
+
+ if (!alias.StartsWith(NKikimr::NMiniKQL::StaticModulePrefix) && !files.contains(key)) {
+ // CreateFakeFileLink calculates md5 for file, let's do it once
+ sysBlock.FrozenFile = CreateFakeFileLink(sysBlock.Data, pathWithMd5->Md5);
+ files[key] = sysBlock;
+ types.UserDataStorage->AddUserDataBlock(key, sysBlock);
+ }
+ }
}
}
@@ -627,9 +627,9 @@ bool FillUsedFiles(
std::pair<IGraphTransformer::TStatus, TAsyncTransformCallbackFuture> FreezeUsedFiles(const TExprNode& node, TUserDataTable& files, const TTypeAnnotationContext& types, TExprContext& ctx, const std::function<bool(const TString&)>& urlDownloadFilter, const TUserDataTable& crutches) {
if (!FillUsedFiles(node, files, types, ctx, crutches)) {
return SyncError();
- }
-
- auto future = FreezeUserDataTableIfNeeded(types.UserDataStorage, files, urlDownloadFilter);
+ }
+
+ auto future = FreezeUserDataTableIfNeeded(types.UserDataStorage, files, urlDownloadFilter);
if (future.Wait(TDuration::Zero())) {
files = future.GetValue()();
return SyncOk();
@@ -666,18 +666,18 @@ std::pair<IGraphTransformer::TStatus, TAsyncTransformCallbackFuture> FreezeUsedF
});
}));
}
-}
-
-bool FreezeUsedFilesSync(const TExprNode& node, TUserDataTable& files, const TTypeAnnotationContext& types, TExprContext& ctx, const std::function<bool(const TString&)>& urlDownloadFilter) {
+}
+
+bool FreezeUsedFilesSync(const TExprNode& node, TUserDataTable& files, const TTypeAnnotationContext& types, TExprContext& ctx, const std::function<bool(const TString&)>& urlDownloadFilter) {
if (!FillUsedFiles(node, files, types, ctx)) {
- return false;
- }
-
- auto future = FreezeUserDataTableIfNeeded(types.UserDataStorage, files, urlDownloadFilter);
- files = future.GetValueSync()();
- return true;
-}
-
+ return false;
+ }
+
+ auto future = FreezeUserDataTableIfNeeded(types.UserDataStorage, files, urlDownloadFilter);
+ files = future.GetValueSync()();
+ return true;
+}
+
void WriteColumns(NYson::TYsonWriter& writer, const TExprBase& columns) {
if (auto maybeList = columns.Maybe<TCoAtomList>()) {
writer.OnBeginList();
diff --git a/ydb/library/yql/providers/common/provider/yql_provider.h b/ydb/library/yql/providers/common/provider/yql_provider.h
index 9e80cfd135..48981bdcdc 100644
--- a/ydb/library/yql/providers/common/provider/yql_provider.h
+++ b/ydb/library/yql/providers/common/provider/yql_provider.h
@@ -106,7 +106,7 @@ bool FillUsedFiles(const TExprNode& node, TUserDataTable& files, const TTypeAnno
std::pair<IGraphTransformer::TStatus, TAsyncTransformCallbackFuture> FreezeUsedFiles(const TExprNode& node, TUserDataTable& files, const TTypeAnnotationContext& types, TExprContext& ctx, const std::function<bool(const TString&)>& urlDownloadFilter, const TUserDataTable& crutches = {});
-bool FreezeUsedFilesSync(const TExprNode& node, TUserDataTable& files, const TTypeAnnotationContext& types, TExprContext& ctx, const std::function<bool(const TString&)>& urlDownloadFilter);
+bool FreezeUsedFilesSync(const TExprNode& node, TUserDataTable& files, const TTypeAnnotationContext& types, TExprContext& ctx, const std::function<bool(const TString&)>& urlDownloadFilter);
void WriteColumns(NYson::TYsonWriter& writer, const NNodes::TExprBase& columns);
diff --git a/ydb/library/yql/providers/common/structured_token/ut/ya.make b/ydb/library/yql/providers/common/structured_token/ut/ya.make
index 99ad5b2da0..c8e0c696a4 100644
--- a/ydb/library/yql/providers/common/structured_token/ut/ya.make
+++ b/ydb/library/yql/providers/common/structured_token/ut/ya.make
@@ -1,12 +1,12 @@
UNITTEST_FOR(ydb/library/yql/providers/common/structured_token)
-
-OWNER(
+
+OWNER(
g:yq
- g:yql
-)
-
-SRCS(
- yql_structured_token_ut.cpp
-)
-
-END()
+ g:yql
+)
+
+SRCS(
+ yql_structured_token_ut.cpp
+)
+
+END()
diff --git a/ydb/library/yql/providers/common/structured_token/ut/yql_structured_token_ut.cpp b/ydb/library/yql/providers/common/structured_token/ut/yql_structured_token_ut.cpp
index 95c97cdbb8..dbf4a47cd4 100644
--- a/ydb/library/yql/providers/common/structured_token/ut/yql_structured_token_ut.cpp
+++ b/ydb/library/yql/providers/common/structured_token/ut/yql_structured_token_ut.cpp
@@ -1,77 +1,77 @@
#include <ydb/library/yql/providers/common/structured_token/yql_structured_token.h>
-
-#include <library/cpp/testing/unittest/registar.h>
-
-namespace NYql {
-
-Y_UNIT_TEST_SUITE(StructuredTokenTest) {
- Y_UNIT_TEST(EmptyToken) {
- const TStructuredToken t1;
- UNIT_ASSERT_VALUES_EQUAL("{}", t1.ToJson());
- UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("key", "xyz"));
-
- auto t2 = ParseStructuredToken("{}");
- UNIT_ASSERT_VALUES_EQUAL("{}", t2.ToJson());
- }
-
- Y_UNIT_TEST(IsStructuredTokenJson) {
- UNIT_ASSERT(!IsStructuredTokenJson(""));
- UNIT_ASSERT(!IsStructuredTokenJson("my_token"));
- UNIT_ASSERT(IsStructuredTokenJson("{}"));
- UNIT_ASSERT(IsStructuredTokenJson(R"({"f1":"my_token"})"));
- }
-
- Y_UNIT_TEST(SetField) {
- TStructuredToken t1;
- t1.SetField("f1", "xxx");
- t1.SetField("f2", "yyy");
- t1.SetField("oops", "zzzzzzzzzzzzz");
-
- UNIT_ASSERT_VALUES_EQUAL("xxx", t1.GetFieldOrDefault("f1", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f3", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("yyy", t1.GetField("f2"));
- UNIT_ASSERT_VALUES_EQUAL(R"({"f1":"xxx","f2":"yyy","oops":"zzzzzzzzzzzzz"})", t1.ToJson());
-
- const TStructuredToken t2 = ParseStructuredToken(t1.ToJson());
- UNIT_ASSERT_VALUES_EQUAL("xxx", t2.GetFieldOrDefault("f1", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("xyz", t2.GetFieldOrDefault("f3", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("yyy", t2.GetField("f2"));
- UNIT_ASSERT_VALUES_EQUAL(t1.ToJson(), t2.ToJson());
- }
-
- Y_UNIT_TEST(SetNonUtf8Field) {
- TStructuredToken t1;
- TString nonUtf8(TStringBuf("\xF0\x9F\x94"));
- t1.SetField("f1", nonUtf8);
- UNIT_ASSERT_VALUES_EQUAL(R"foo({"f1(base64)":"8J+U"})foo", t1.ToJson());
- UNIT_ASSERT_VALUES_EQUAL(nonUtf8, t1.GetField("f1"));
- UNIT_ASSERT_VALUES_EQUAL("empty", t1.GetFieldOrDefault("f1(base64)", "empty"));
-
- const TStructuredToken t2 = ParseStructuredToken(t1.ToJson());
- UNIT_ASSERT_VALUES_EQUAL(nonUtf8, t2.GetField("f1"));
- UNIT_ASSERT_VALUES_EQUAL("xyz", t2.GetFieldOrDefault("f2", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL(t1.ToJson(), t2.ToJson());
- }
-
- Y_UNIT_TEST(Move) {
- TStructuredToken t1;
- t1
- .SetField("f1", "xxx")
- .SetField("f2", "yyy");
-
- UNIT_ASSERT_VALUES_EQUAL("xxx", t1.GetFieldOrDefault("f1", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("yyy", t1.GetFieldOrDefault("f2", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f3", "xyz"));
-
- const TStructuredToken t2(std::move(t1));
- UNIT_ASSERT_VALUES_EQUAL("xxx", t2.GetFieldOrDefault("f1", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("yyy", t2.GetFieldOrDefault("f2", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("xyz", t2.GetFieldOrDefault("f3", "xyz"));
-
- UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f1", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f2", "xyz"));
- UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f3", "xyz"));
- }
-}
-
-}
+
+#include <library/cpp/testing/unittest/registar.h>
+
+namespace NYql {
+
+Y_UNIT_TEST_SUITE(StructuredTokenTest) {
+ Y_UNIT_TEST(EmptyToken) {
+ const TStructuredToken t1;
+ UNIT_ASSERT_VALUES_EQUAL("{}", t1.ToJson());
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("key", "xyz"));
+
+ auto t2 = ParseStructuredToken("{}");
+ UNIT_ASSERT_VALUES_EQUAL("{}", t2.ToJson());
+ }
+
+ Y_UNIT_TEST(IsStructuredTokenJson) {
+ UNIT_ASSERT(!IsStructuredTokenJson(""));
+ UNIT_ASSERT(!IsStructuredTokenJson("my_token"));
+ UNIT_ASSERT(IsStructuredTokenJson("{}"));
+ UNIT_ASSERT(IsStructuredTokenJson(R"({"f1":"my_token"})"));
+ }
+
+ Y_UNIT_TEST(SetField) {
+ TStructuredToken t1;
+ t1.SetField("f1", "xxx");
+ t1.SetField("f2", "yyy");
+ t1.SetField("oops", "zzzzzzzzzzzzz");
+
+ UNIT_ASSERT_VALUES_EQUAL("xxx", t1.GetFieldOrDefault("f1", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f3", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("yyy", t1.GetField("f2"));
+ UNIT_ASSERT_VALUES_EQUAL(R"({"f1":"xxx","f2":"yyy","oops":"zzzzzzzzzzzzz"})", t1.ToJson());
+
+ const TStructuredToken t2 = ParseStructuredToken(t1.ToJson());
+ UNIT_ASSERT_VALUES_EQUAL("xxx", t2.GetFieldOrDefault("f1", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t2.GetFieldOrDefault("f3", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("yyy", t2.GetField("f2"));
+ UNIT_ASSERT_VALUES_EQUAL(t1.ToJson(), t2.ToJson());
+ }
+
+ Y_UNIT_TEST(SetNonUtf8Field) {
+ TStructuredToken t1;
+ TString nonUtf8(TStringBuf("\xF0\x9F\x94"));
+ t1.SetField("f1", nonUtf8);
+ UNIT_ASSERT_VALUES_EQUAL(R"foo({"f1(base64)":"8J+U"})foo", t1.ToJson());
+ UNIT_ASSERT_VALUES_EQUAL(nonUtf8, t1.GetField("f1"));
+ UNIT_ASSERT_VALUES_EQUAL("empty", t1.GetFieldOrDefault("f1(base64)", "empty"));
+
+ const TStructuredToken t2 = ParseStructuredToken(t1.ToJson());
+ UNIT_ASSERT_VALUES_EQUAL(nonUtf8, t2.GetField("f1"));
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t2.GetFieldOrDefault("f2", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL(t1.ToJson(), t2.ToJson());
+ }
+
+ Y_UNIT_TEST(Move) {
+ TStructuredToken t1;
+ t1
+ .SetField("f1", "xxx")
+ .SetField("f2", "yyy");
+
+ UNIT_ASSERT_VALUES_EQUAL("xxx", t1.GetFieldOrDefault("f1", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("yyy", t1.GetFieldOrDefault("f2", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f3", "xyz"));
+
+ const TStructuredToken t2(std::move(t1));
+ UNIT_ASSERT_VALUES_EQUAL("xxx", t2.GetFieldOrDefault("f1", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("yyy", t2.GetFieldOrDefault("f2", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t2.GetFieldOrDefault("f3", "xyz"));
+
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f1", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f2", "xyz"));
+ UNIT_ASSERT_VALUES_EQUAL("xyz", t1.GetFieldOrDefault("f3", "xyz"));
+ }
+}
+
+}
diff --git a/ydb/library/yql/providers/common/structured_token/ut/yql_token_builder_ut.cpp b/ydb/library/yql/providers/common/structured_token/ut/yql_token_builder_ut.cpp
index 3675014d48..e417e18aa4 100644
--- a/ydb/library/yql/providers/common/structured_token/ut/yql_token_builder_ut.cpp
+++ b/ydb/library/yql/providers/common/structured_token/ut/yql_token_builder_ut.cpp
@@ -1,94 +1,94 @@
#include <ydb/library/yql/providers/common/structured_token/yql_token_builder.h>
-
-#include <library/cpp/testing/unittest/registar.h>
-
-namespace NYql {
-
-Y_UNIT_TEST_SUITE(TokenBuilderTest) {
- Y_UNIT_TEST(Empty) {
- const TStructuredTokenBuilder b;
- UNIT_ASSERT_VALUES_EQUAL("{}", b.ToJson());
- const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
- UNIT_ASSERT(!p.HasServiceAccountIdAuth());
- UNIT_ASSERT(!p.HasBasicAuth());
- UNIT_ASSERT(!p.HasIAMToken());
- UNIT_ASSERT(!p.IsNoAuth());
- }
-
- Y_UNIT_TEST(ServiceAccountId) {
- TStructuredTokenBuilder b;
- b.SetServiceAccountIdAuth("my_sa_id", "my_sa_sign");
- UNIT_ASSERT_VALUES_EQUAL(R"({"sa_id":"my_sa_id","sa_id_signature":"my_sa_sign"})", b.ToJson());
- const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
- UNIT_ASSERT(p.HasServiceAccountIdAuth());
- UNIT_ASSERT(!p.HasBasicAuth());
- UNIT_ASSERT(!p.HasIAMToken());
- UNIT_ASSERT(!p.IsNoAuth());
- TString id, sign;
- UNIT_ASSERT(p.GetServiceAccountIdAuth(id, sign));
- UNIT_ASSERT_VALUES_EQUAL(id, "my_sa_id");
- UNIT_ASSERT_VALUES_EQUAL(sign, "my_sa_sign");
- }
-
- Y_UNIT_TEST(BasicAuth) {
- TStructuredTokenBuilder b;
- b.SetBasicAuth("my_login", "my_passw");
- UNIT_ASSERT_VALUES_EQUAL(R"({"basic_login":"my_login","basic_password":"my_passw"})", b.ToJson());
- const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
- UNIT_ASSERT(!p.HasServiceAccountIdAuth());
- UNIT_ASSERT(p.HasBasicAuth());
- UNIT_ASSERT(!p.HasIAMToken());
- UNIT_ASSERT(!p.IsNoAuth());
- TString login, password;
- UNIT_ASSERT(p.GetBasicAuth(login, password));
- UNIT_ASSERT_VALUES_EQUAL(login, "my_login");
- UNIT_ASSERT_VALUES_EQUAL(password, "my_passw");
- }
-
- Y_UNIT_TEST(IAMToken) {
- TStructuredTokenBuilder b;
- b.SetIAMToken("my_token");
- UNIT_ASSERT_VALUES_EQUAL(R"({"token":"my_token"})", b.ToJson());
- const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
- UNIT_ASSERT(!p.HasServiceAccountIdAuth());
- UNIT_ASSERT(!p.HasBasicAuth());
- UNIT_ASSERT(p.HasIAMToken());
- UNIT_ASSERT(!p.IsNoAuth());
- TString token = p.GetIAMToken();
- UNIT_ASSERT_VALUES_EQUAL(token, "my_token");
- }
-
- Y_UNIT_TEST(NoAuth) {
- TStructuredTokenBuilder b;
- b.SetNoAuth();
- UNIT_ASSERT_VALUES_EQUAL(R"({"no_auth":""})", b.ToJson());
- const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
- UNIT_ASSERT(!p.HasServiceAccountIdAuth());
- UNIT_ASSERT(!p.HasBasicAuth());
- UNIT_ASSERT(!p.HasIAMToken());
- UNIT_ASSERT(p.IsNoAuth());
- }
-
- Y_UNIT_TEST(BasicAuthAndToken) {
- TStructuredTokenBuilder b;
- b.SetBasicAuth("my_login", "my_passw");
- b.SetIAMToken("my_token");
- UNIT_ASSERT_VALUES_EQUAL(R"({"basic_login":"my_login","basic_password":"my_passw","token":"my_token"})", b.ToJson());
- const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
- UNIT_ASSERT(!p.HasServiceAccountIdAuth());
- UNIT_ASSERT(p.HasBasicAuth());
- UNIT_ASSERT(p.HasIAMToken());
- UNIT_ASSERT(!p.IsNoAuth());
-
- TString login, password;
- UNIT_ASSERT(p.GetBasicAuth(login, password));
- UNIT_ASSERT_VALUES_EQUAL(login, "my_login");
- UNIT_ASSERT_VALUES_EQUAL(password, "my_passw");
-
- TString token = p.GetIAMToken();
- UNIT_ASSERT_VALUES_EQUAL(token, "my_token");
-
- }
-}
-
-}
+
+#include <library/cpp/testing/unittest/registar.h>
+
+namespace NYql {
+
+Y_UNIT_TEST_SUITE(TokenBuilderTest) {
+ Y_UNIT_TEST(Empty) {
+ const TStructuredTokenBuilder b;
+ UNIT_ASSERT_VALUES_EQUAL("{}", b.ToJson());
+ const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
+ UNIT_ASSERT(!p.HasServiceAccountIdAuth());
+ UNIT_ASSERT(!p.HasBasicAuth());
+ UNIT_ASSERT(!p.HasIAMToken());
+ UNIT_ASSERT(!p.IsNoAuth());
+ }
+
+ Y_UNIT_TEST(ServiceAccountId) {
+ TStructuredTokenBuilder b;
+ b.SetServiceAccountIdAuth("my_sa_id", "my_sa_sign");
+ UNIT_ASSERT_VALUES_EQUAL(R"({"sa_id":"my_sa_id","sa_id_signature":"my_sa_sign"})", b.ToJson());
+ const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
+ UNIT_ASSERT(p.HasServiceAccountIdAuth());
+ UNIT_ASSERT(!p.HasBasicAuth());
+ UNIT_ASSERT(!p.HasIAMToken());
+ UNIT_ASSERT(!p.IsNoAuth());
+ TString id, sign;
+ UNIT_ASSERT(p.GetServiceAccountIdAuth(id, sign));
+ UNIT_ASSERT_VALUES_EQUAL(id, "my_sa_id");
+ UNIT_ASSERT_VALUES_EQUAL(sign, "my_sa_sign");
+ }
+
+ Y_UNIT_TEST(BasicAuth) {
+ TStructuredTokenBuilder b;
+ b.SetBasicAuth("my_login", "my_passw");
+ UNIT_ASSERT_VALUES_EQUAL(R"({"basic_login":"my_login","basic_password":"my_passw"})", b.ToJson());
+ const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
+ UNIT_ASSERT(!p.HasServiceAccountIdAuth());
+ UNIT_ASSERT(p.HasBasicAuth());
+ UNIT_ASSERT(!p.HasIAMToken());
+ UNIT_ASSERT(!p.IsNoAuth());
+ TString login, password;
+ UNIT_ASSERT(p.GetBasicAuth(login, password));
+ UNIT_ASSERT_VALUES_EQUAL(login, "my_login");
+ UNIT_ASSERT_VALUES_EQUAL(password, "my_passw");
+ }
+
+ Y_UNIT_TEST(IAMToken) {
+ TStructuredTokenBuilder b;
+ b.SetIAMToken("my_token");
+ UNIT_ASSERT_VALUES_EQUAL(R"({"token":"my_token"})", b.ToJson());
+ const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
+ UNIT_ASSERT(!p.HasServiceAccountIdAuth());
+ UNIT_ASSERT(!p.HasBasicAuth());
+ UNIT_ASSERT(p.HasIAMToken());
+ UNIT_ASSERT(!p.IsNoAuth());
+ TString token = p.GetIAMToken();
+ UNIT_ASSERT_VALUES_EQUAL(token, "my_token");
+ }
+
+ Y_UNIT_TEST(NoAuth) {
+ TStructuredTokenBuilder b;
+ b.SetNoAuth();
+ UNIT_ASSERT_VALUES_EQUAL(R"({"no_auth":""})", b.ToJson());
+ const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
+ UNIT_ASSERT(!p.HasServiceAccountIdAuth());
+ UNIT_ASSERT(!p.HasBasicAuth());
+ UNIT_ASSERT(!p.HasIAMToken());
+ UNIT_ASSERT(p.IsNoAuth());
+ }
+
+ Y_UNIT_TEST(BasicAuthAndToken) {
+ TStructuredTokenBuilder b;
+ b.SetBasicAuth("my_login", "my_passw");
+ b.SetIAMToken("my_token");
+ UNIT_ASSERT_VALUES_EQUAL(R"({"basic_login":"my_login","basic_password":"my_passw","token":"my_token"})", b.ToJson());
+ const TStructuredTokenParser p = CreateStructuredTokenParser(b.ToJson());
+ UNIT_ASSERT(!p.HasServiceAccountIdAuth());
+ UNIT_ASSERT(p.HasBasicAuth());
+ UNIT_ASSERT(p.HasIAMToken());
+ UNIT_ASSERT(!p.IsNoAuth());
+
+ TString login, password;
+ UNIT_ASSERT(p.GetBasicAuth(login, password));
+ UNIT_ASSERT_VALUES_EQUAL(login, "my_login");
+ UNIT_ASSERT_VALUES_EQUAL(password, "my_passw");
+
+ TString token = p.GetIAMToken();
+ UNIT_ASSERT_VALUES_EQUAL(token, "my_token");
+
+ }
+}
+
+}
diff --git a/ydb/library/yql/providers/common/structured_token/ya.make b/ydb/library/yql/providers/common/structured_token/ya.make
index 777ab09910..73df2c2600 100644
--- a/ydb/library/yql/providers/common/structured_token/ya.make
+++ b/ydb/library/yql/providers/common/structured_token/ya.make
@@ -1,22 +1,22 @@
-LIBRARY()
-
-OWNER(g:yql)
-
-SRCS(
- yql_structured_token.cpp
- yql_structured_token.h
- yql_token_builder.cpp
- yql_token_builder.h
-)
-
-PEERDIR(
- library/cpp/json
- library/cpp/string_utils/base64
+LIBRARY()
+
+OWNER(g:yql)
+
+SRCS(
+ yql_structured_token.cpp
+ yql_structured_token.h
+ yql_token_builder.cpp
+ yql_token_builder.h
+)
+
+PEERDIR(
+ library/cpp/json
+ library/cpp/string_utils/base64
ydb/library/yql/utils
-)
-
-END()
-
-RECURSE_FOR_TESTS(
- ut
-)
+)
+
+END()
+
+RECURSE_FOR_TESTS(
+ ut
+)
diff --git a/ydb/library/yql/providers/common/structured_token/yql_structured_token.cpp b/ydb/library/yql/providers/common/structured_token/yql_structured_token.cpp
index 84a2f06b3c..7a05271165 100644
--- a/ydb/library/yql/providers/common/structured_token/yql_structured_token.cpp
+++ b/ydb/library/yql/providers/common/structured_token/yql_structured_token.cpp
@@ -1,84 +1,84 @@
-#include "yql_structured_token.h"
-
+#include "yql_structured_token.h"
+
#include <ydb/library/yql/utils/utf8.h>
-
-#include <library/cpp/json/json_reader.h>
-#include <library/cpp/json/json_writer.h>
-#include <library/cpp/string_utils/base64/base64.h>
-
-
-namespace NYql {
-
-TStructuredToken::TStructuredToken(TMap<TString, TString>&& data)
- : Data(std::move(data)) {
-
-}
-
-TString TStructuredToken::GetField(const TString& name) const {
- return Data.at(name);
-}
-
-TString TStructuredToken::GetFieldOrDefault(const TString& name, const TString& defaultValue) const {
- return FindField(name).GetOrElse(defaultValue);
-}
-
-TMaybe<TString> TStructuredToken::FindField(const TString& name) const {
- auto* r = Data.FindPtr(name);
- return r ? MakeMaybe(*r) : Nothing();
-}
-
-bool TStructuredToken::HasField(const TString& name) const {
- return Data.contains(name);
-}
-
-TStructuredToken& TStructuredToken::SetField(const TString& name, const TString& value) {
- Data[name] = value;
- return *this;
-}
-
-TString TStructuredToken::ToJson() const {
- TStringStream output;
- // set "format output" to false, no need for extra indents
- // "sort keys" value is not used actually
- // turn on UTF8 validation (need for keys checks)
- NJson::TJsonWriter writer(&output, false, true, true);
- writer.OpenMap();
-
- for (auto&[k, v] : Data) {
- if (!IsUtf8(v)) {
- writer.Write(k + "(base64)", Base64Encode(TStringBuf(v)));
- } else {
- writer.Write(k, v);
- }
- }
- writer.CloseMap();
- writer.Flush();
-
- return output.Str();
-}
-
-TStructuredToken ParseStructuredToken(const TString& content) {
- Y_VERIFY(IsStructuredTokenJson(content));
-
- NJson::TJsonValue v;
- // will throw on error
- NJson::ReadJsonTree(content, &v, true);
- TMap<TString, TString> data;
- const auto& m = v.GetMapSafe();
- for (auto&[k, v] : m) {
- TStringBuf key(k);
- if (key.ChopSuffix("(base64)")) {
- const auto& s = v.GetStringSafe();
- data[TString(key)] = Base64Decode(TStringBuf(s));
- } else {
- data[k] = v.GetStringSafe();
- }
- }
- return TStructuredToken(std::move(data));
-}
-
-bool IsStructuredTokenJson(const TString& content) {
- return content.StartsWith("{") && content.EndsWith("}");
-}
-
-} // namespace NYql
+
+#include <library/cpp/json/json_reader.h>
+#include <library/cpp/json/json_writer.h>
+#include <library/cpp/string_utils/base64/base64.h>
+
+
+namespace NYql {
+
+TStructuredToken::TStructuredToken(TMap<TString, TString>&& data)
+ : Data(std::move(data)) {
+
+}
+
+TString TStructuredToken::GetField(const TString& name) const {
+ return Data.at(name);
+}
+
+TString TStructuredToken::GetFieldOrDefault(const TString& name, const TString& defaultValue) const {
+ return FindField(name).GetOrElse(defaultValue);
+}
+
+TMaybe<TString> TStructuredToken::FindField(const TString& name) const {
+ auto* r = Data.FindPtr(name);
+ return r ? MakeMaybe(*r) : Nothing();
+}
+
+bool TStructuredToken::HasField(const TString& name) const {
+ return Data.contains(name);
+}
+
+TStructuredToken& TStructuredToken::SetField(const TString& name, const TString& value) {
+ Data[name] = value;
+ return *this;
+}
+
+TString TStructuredToken::ToJson() const {
+ TStringStream output;
+ // set "format output" to false, no need for extra indents
+ // "sort keys" value is not used actually
+ // turn on UTF8 validation (need for keys checks)
+ NJson::TJsonWriter writer(&output, false, true, true);
+ writer.OpenMap();
+
+ for (auto&[k, v] : Data) {
+ if (!IsUtf8(v)) {
+ writer.Write(k + "(base64)", Base64Encode(TStringBuf(v)));
+ } else {
+ writer.Write(k, v);
+ }
+ }
+ writer.CloseMap();
+ writer.Flush();
+
+ return output.Str();
+}
+
+TStructuredToken ParseStructuredToken(const TString& content) {
+ Y_VERIFY(IsStructuredTokenJson(content));
+
+ NJson::TJsonValue v;
+ // will throw on error
+ NJson::ReadJsonTree(content, &v, true);
+ TMap<TString, TString> data;
+ const auto& m = v.GetMapSafe();
+ for (auto&[k, v] : m) {
+ TStringBuf key(k);
+ if (key.ChopSuffix("(base64)")) {
+ const auto& s = v.GetStringSafe();
+ data[TString(key)] = Base64Decode(TStringBuf(s));
+ } else {
+ data[k] = v.GetStringSafe();
+ }
+ }
+ return TStructuredToken(std::move(data));
+}
+
+bool IsStructuredTokenJson(const TString& content) {
+ return content.StartsWith("{") && content.EndsWith("}");
+}
+
+} // namespace NYql
diff --git a/ydb/library/yql/providers/common/structured_token/yql_structured_token.h b/ydb/library/yql/providers/common/structured_token/yql_structured_token.h
index 6ee1f478b7..365ac7462e 100644
--- a/ydb/library/yql/providers/common/structured_token/yql_structured_token.h
+++ b/ydb/library/yql/providers/common/structured_token/yql_structured_token.h
@@ -1,30 +1,30 @@
-#pragma once
-
-#include <util/generic/map.h>
-#include <util/generic/maybe.h>
-#include <util/generic/string.h>
-
-namespace NYql {
-
-class TStructuredToken {
-public:
- explicit TStructuredToken(TMap<TString, TString>&& data = {});
- TStructuredToken(TStructuredToken&&) = default;
- TStructuredToken(const TStructuredToken&) = default;
-
- TString GetField(const TString& name) const;
- TString GetFieldOrDefault(const TString& name, const TString& defaultValue) const;
- TMaybe<TString> FindField(const TString& name) const;
- bool HasField(const TString& name) const;
- TStructuredToken& SetField(const TString& name, const TString& value);
- TString ToJson() const;
-
-private:
- TMap<TString, TString> Data;
-};
-
-// is used for backward compatibility when content contains just token
-bool IsStructuredTokenJson(const TString& content);
-TStructuredToken ParseStructuredToken(const TString& content);
-
-} // namespace NYql
+#pragma once
+
+#include <util/generic/map.h>
+#include <util/generic/maybe.h>
+#include <util/generic/string.h>
+
+namespace NYql {
+
+class TStructuredToken {
+public:
+ explicit TStructuredToken(TMap<TString, TString>&& data = {});
+ TStructuredToken(TStructuredToken&&) = default;
+ TStructuredToken(const TStructuredToken&) = default;
+
+ TString GetField(const TString& name) const;
+ TString GetFieldOrDefault(const TString& name, const TString& defaultValue) const;
+ TMaybe<TString> FindField(const TString& name) const;
+ bool HasField(const TString& name) const;
+ TStructuredToken& SetField(const TString& name, const TString& value);
+ TString ToJson() const;
+
+private:
+ TMap<TString, TString> Data;
+};
+
+// is used for backward compatibility when content contains just token
+bool IsStructuredTokenJson(const TString& content);
+TStructuredToken ParseStructuredToken(const TString& content);
+
+} // namespace NYql
diff --git a/ydb/library/yql/providers/common/structured_token/yql_token_builder.cpp b/ydb/library/yql/providers/common/structured_token/yql_token_builder.cpp
index 3bace92c54..3c0cacd370 100644
--- a/ydb/library/yql/providers/common/structured_token/yql_token_builder.cpp
+++ b/ydb/library/yql/providers/common/structured_token/yql_token_builder.cpp
@@ -1,102 +1,102 @@
-#include "yql_token_builder.h"
-
-namespace NYql {
-TStructuredTokenBuilder::TStructuredTokenBuilder() {
-
-}
-
-TStructuredTokenBuilder::TStructuredTokenBuilder(const TStructuredToken& data)
- : Data(data)
-{
-}
-
-TStructuredTokenBuilder& TStructuredTokenBuilder::SetServiceAccountIdAuth(const TString& accountId, const TString& accountIdSignature) {
- Data.SetField("sa_id", accountId);
- Data.SetField("sa_id_signature", accountIdSignature);
- return *this;
-}
-
-TStructuredTokenBuilder& TStructuredTokenBuilder::SetBasicAuth(const TString& login, const TString& password) {
- Data.SetField("basic_login", login);
- Data.SetField("basic_password", password);
- return *this;
-}
-
-TStructuredTokenBuilder& TStructuredTokenBuilder::SetIAMToken(const TString& token) {
- Data.SetField("token", token);
- return *this;
-}
-
-TStructuredTokenBuilder& TStructuredTokenBuilder::SetNoAuth() {
- Data.SetField("no_auth", {});
- return *this;
-}
-
-TString TStructuredTokenBuilder::ToJson() const {
- return Data.ToJson();
-}
-
-///////////////////////////////////////////////////////////////////
-
-TStructuredTokenParser::TStructuredTokenParser(TStructuredToken&& data)
- : Data(std::move(data))
-{
-}
-
-bool TStructuredTokenParser::HasServiceAccountIdAuth() const {
- return Data.HasField("sa_id");
-}
-
-bool TStructuredTokenParser::GetServiceAccountIdAuth(TString& accountId, TString& accountIdSignature) const {
- accountId = Data.GetField("sa_id");
- accountIdSignature = Data.GetField("sa_id_signature");
- return true;
-}
-
-bool TStructuredTokenParser::HasBasicAuth() const {
- return Data.HasField("basic_login");
-}
-
-bool TStructuredTokenParser::GetBasicAuth(TString& login, TString& password) const {
- login = Data.GetField("basic_login");
- password = Data.GetField("basic_password");
- return true;
-}
-
-bool TStructuredTokenParser::HasIAMToken() const {
- return Data.HasField("token");
-}
-
-TString TStructuredTokenParser::GetIAMToken() const {
- return Data.GetField("token");
-}
-
-bool TStructuredTokenParser::IsNoAuth() const {
- return Data.HasField("no_auth");
-}
-
-TStructuredTokenBuilder TStructuredTokenParser::ToBuilder() const {
- return TStructuredTokenBuilder(Data);
-}
-
-TStructuredTokenParser CreateStructuredTokenParser(const TString& content = {}) {
- return content ? TStructuredTokenParser(ParseStructuredToken(content)) : TStructuredTokenParser(TStructuredToken({}));
-}
-
-TString ComposeStructuredTokenJsonForServiceAccount(const TString& serviceAccountId, const TString& serviceAccountIdSignature, const TString& token) {
- TStructuredTokenBuilder result;
- if (serviceAccountId && serviceAccountIdSignature) {
- result.SetServiceAccountIdAuth(serviceAccountId, serviceAccountIdSignature);
- return result.ToJson();
- }
-
- if (token) {
- result.SetIAMToken(token);
- return result.ToJson();
- }
-
- result.SetNoAuth();
- return result.ToJson();
-}
-
-}
+#include "yql_token_builder.h"
+
+namespace NYql {
+TStructuredTokenBuilder::TStructuredTokenBuilder() {
+
+}
+
+TStructuredTokenBuilder::TStructuredTokenBuilder(const TStructuredToken& data)
+ : Data(data)
+{
+}
+
+TStructuredTokenBuilder& TStructuredTokenBuilder::SetServiceAccountIdAuth(const TString& accountId, const TString& accountIdSignature) {
+ Data.SetField("sa_id", accountId);
+ Data.SetField("sa_id_signature", accountIdSignature);
+ return *this;
+}
+
+TStructuredTokenBuilder& TStructuredTokenBuilder::SetBasicAuth(const TString& login, const TString& password) {
+ Data.SetField("basic_login", login);
+ Data.SetField("basic_password", password);
+ return *this;
+}
+
+TStructuredTokenBuilder& TStructuredTokenBuilder::SetIAMToken(const TString& token) {
+ Data.SetField("token", token);
+ return *this;
+}
+
+TStructuredTokenBuilder& TStructuredTokenBuilder::SetNoAuth() {
+ Data.SetField("no_auth", {});
+ return *this;
+}
+
+TString TStructuredTokenBuilder::ToJson() const {
+ return Data.ToJson();
+}
+
+///////////////////////////////////////////////////////////////////
+
+TStructuredTokenParser::TStructuredTokenParser(TStructuredToken&& data)
+ : Data(std::move(data))
+{
+}
+
+bool TStructuredTokenParser::HasServiceAccountIdAuth() const {
+ return Data.HasField("sa_id");
+}
+
+bool TStructuredTokenParser::GetServiceAccountIdAuth(TString& accountId, TString& accountIdSignature) const {
+ accountId = Data.GetField("sa_id");
+ accountIdSignature = Data.GetField("sa_id_signature");
+ return true;
+}
+
+bool TStructuredTokenParser::HasBasicAuth() const {
+ return Data.HasField("basic_login");
+}
+
+bool TStructuredTokenParser::GetBasicAuth(TString& login, TString& password) const {
+ login = Data.GetField("basic_login");
+ password = Data.GetField("basic_password");
+ return true;
+}
+
+bool TStructuredTokenParser::HasIAMToken() const {
+ return Data.HasField("token");
+}
+
+TString TStructuredTokenParser::GetIAMToken() const {
+ return Data.GetField("token");
+}
+
+bool TStructuredTokenParser::IsNoAuth() const {
+ return Data.HasField("no_auth");
+}
+
+TStructuredTokenBuilder TStructuredTokenParser::ToBuilder() const {
+ return TStructuredTokenBuilder(Data);
+}
+
+TStructuredTokenParser CreateStructuredTokenParser(const TString& content = {}) {
+ return content ? TStructuredTokenParser(ParseStructuredToken(content)) : TStructuredTokenParser(TStructuredToken({}));
+}
+
+TString ComposeStructuredTokenJsonForServiceAccount(const TString& serviceAccountId, const TString& serviceAccountIdSignature, const TString& token) {
+ TStructuredTokenBuilder result;
+ if (serviceAccountId && serviceAccountIdSignature) {
+ result.SetServiceAccountIdAuth(serviceAccountId, serviceAccountIdSignature);
+ return result.ToJson();
+ }
+
+ if (token) {
+ result.SetIAMToken(token);
+ return result.ToJson();
+ }
+
+ result.SetNoAuth();
+ return result.ToJson();
+}
+
+}
diff --git a/ydb/library/yql/providers/common/structured_token/yql_token_builder.h b/ydb/library/yql/providers/common/structured_token/yql_token_builder.h
index aec2659446..55217d0cfc 100644
--- a/ydb/library/yql/providers/common/structured_token/yql_token_builder.h
+++ b/ydb/library/yql/providers/common/structured_token/yql_token_builder.h
@@ -1,43 +1,43 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/providers/common/structured_token/yql_structured_token.h>
-
-namespace NYql {
-
-class TStructuredTokenBuilder {
-public:
- TStructuredTokenBuilder();
- explicit TStructuredTokenBuilder(const TStructuredToken& data);
- TStructuredTokenBuilder(TStructuredTokenBuilder&&) = default;
-
- TStructuredTokenBuilder& SetServiceAccountIdAuth(const TString& accountId, const TString& accountIdSignature);
- TStructuredTokenBuilder& SetBasicAuth(const TString& login, const TString& password);
- TStructuredTokenBuilder& SetIAMToken(const TString& token);
- TStructuredTokenBuilder& SetNoAuth();
-
- TString ToJson() const;
-
-private:
- TStructuredToken Data;
-};
-
-class TStructuredTokenParser {
-public:
- explicit TStructuredTokenParser(TStructuredToken&& data);
- bool HasServiceAccountIdAuth() const;
- bool GetServiceAccountIdAuth(TString& accountId, TString& accountIdSignature) const;
- bool HasBasicAuth() const;
- bool GetBasicAuth(TString& login, TString& password) const;
- bool HasIAMToken() const;
- TString GetIAMToken() const;
- bool IsNoAuth() const;
-
- TStructuredTokenBuilder ToBuilder() const;
-
-private:
- const TStructuredToken Data;
-};
-
-TStructuredTokenParser CreateStructuredTokenParser(const TString& content);
-TString ComposeStructuredTokenJsonForServiceAccount(const TString& serviceAccountId, const TString& serviceAccountIdSignature, const TString& token);
-}
+
+namespace NYql {
+
+class TStructuredTokenBuilder {
+public:
+ TStructuredTokenBuilder();
+ explicit TStructuredTokenBuilder(const TStructuredToken& data);
+ TStructuredTokenBuilder(TStructuredTokenBuilder&&) = default;
+
+ TStructuredTokenBuilder& SetServiceAccountIdAuth(const TString& accountId, const TString& accountIdSignature);
+ TStructuredTokenBuilder& SetBasicAuth(const TString& login, const TString& password);
+ TStructuredTokenBuilder& SetIAMToken(const TString& token);
+ TStructuredTokenBuilder& SetNoAuth();
+
+ TString ToJson() const;
+
+private:
+ TStructuredToken Data;
+};
+
+class TStructuredTokenParser {
+public:
+ explicit TStructuredTokenParser(TStructuredToken&& data);
+ bool HasServiceAccountIdAuth() const;
+ bool GetServiceAccountIdAuth(TString& accountId, TString& accountIdSignature) const;
+ bool HasBasicAuth() const;
+ bool GetBasicAuth(TString& login, TString& password) const;
+ bool HasIAMToken() const;
+ TString GetIAMToken() const;
+ bool IsNoAuth() const;
+
+ TStructuredTokenBuilder ToBuilder() const;
+
+private:
+ const TStructuredToken Data;
+};
+
+TStructuredTokenParser CreateStructuredTokenParser(const TString& content);
+TString ComposeStructuredTokenJsonForServiceAccount(const TString& serviceAccountId, const TString& serviceAccountIdSignature, const TString& token);
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.cpp b/ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.cpp
index fd0554a315..685b8e06d4 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.cpp
+++ b/ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.cpp
@@ -1,54 +1,54 @@
-#include "bearer_credentials_provider.h"
-#include <util/string/cast.h>
-
-namespace NYql {
-
-namespace {
-class TBearerCredentialsProvider : public NYdb::ICredentialsProvider {
-public:
- explicit TBearerCredentialsProvider(std::shared_ptr<NYdb::ICredentialsProvider> delegatee)
- : Delegatee(delegatee) {
- }
-
- TString GetAuthInfo() const override {
- TString result = Delegatee->GetAuthInfo();
- if (!result || result.StartsWith("Bearer ")) {
- return result;
- }
-
- return "Bearer " + result;
- }
-
- bool IsValid() const override {
- return Delegatee->IsValid();
- }
-
-private:
- const std::shared_ptr<NYdb::ICredentialsProvider> Delegatee;
-};
-
-class TBearerCredentialsProviderFactory : public NYdb::ICredentialsProviderFactory {
-public:
- explicit TBearerCredentialsProviderFactory(std::shared_ptr<NYdb::ICredentialsProviderFactory> delegatee)
- : Delegatee(delegatee) {
- }
-
- TString GetClientIdentity() const override {
- return "BEARER_CRED_PROV_FACTORY" + ToString((ui64)this);
- }
-
- std::shared_ptr<NYdb::ICredentialsProvider> CreateProvider() const override {
- return std::make_shared<TBearerCredentialsProvider>(Delegatee->CreateProvider());
- }
-
-private:
- const std::shared_ptr<NYdb::ICredentialsProviderFactory> Delegatee;
-};
-
-}
-
-std::shared_ptr<NYdb::ICredentialsProviderFactory> WrapCredentialsProviderFactoryWithBearer(std::shared_ptr<NYdb::ICredentialsProviderFactory> delegatee) {
- return std::make_shared<TBearerCredentialsProviderFactory>(delegatee);
-}
-
-}
+#include "bearer_credentials_provider.h"
+#include <util/string/cast.h>
+
+namespace NYql {
+
+namespace {
+class TBearerCredentialsProvider : public NYdb::ICredentialsProvider {
+public:
+ explicit TBearerCredentialsProvider(std::shared_ptr<NYdb::ICredentialsProvider> delegatee)
+ : Delegatee(delegatee) {
+ }
+
+ TString GetAuthInfo() const override {
+ TString result = Delegatee->GetAuthInfo();
+ if (!result || result.StartsWith("Bearer ")) {
+ return result;
+ }
+
+ return "Bearer " + result;
+ }
+
+ bool IsValid() const override {
+ return Delegatee->IsValid();
+ }
+
+private:
+ const std::shared_ptr<NYdb::ICredentialsProvider> Delegatee;
+};
+
+class TBearerCredentialsProviderFactory : public NYdb::ICredentialsProviderFactory {
+public:
+ explicit TBearerCredentialsProviderFactory(std::shared_ptr<NYdb::ICredentialsProviderFactory> delegatee)
+ : Delegatee(delegatee) {
+ }
+
+ TString GetClientIdentity() const override {
+ return "BEARER_CRED_PROV_FACTORY" + ToString((ui64)this);
+ }
+
+ std::shared_ptr<NYdb::ICredentialsProvider> CreateProvider() const override {
+ return std::make_shared<TBearerCredentialsProvider>(Delegatee->CreateProvider());
+ }
+
+private:
+ const std::shared_ptr<NYdb::ICredentialsProviderFactory> Delegatee;
+};
+
+}
+
+std::shared_ptr<NYdb::ICredentialsProviderFactory> WrapCredentialsProviderFactoryWithBearer(std::shared_ptr<NYdb::ICredentialsProviderFactory> delegatee) {
+ return std::make_shared<TBearerCredentialsProviderFactory>(delegatee);
+}
+
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.h b/ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.h
index 87034a9da2..bee3e89f8f 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.h
+++ b/ydb/library/yql/providers/common/token_accessor/client/bearer_credentials_provider.h
@@ -1,11 +1,11 @@
-#pragma once
-
+#pragma once
+
#include <ydb/public/sdk/cpp/client/ydb_types/credentials/credentials.h>
-
-namespace NYql {
-
-std::shared_ptr<NYdb::ICredentialsProviderFactory> WrapCredentialsProviderFactoryWithBearer(
- std::shared_ptr<NYdb::ICredentialsProviderFactory> delegatee
-);
-
-}
+
+namespace NYql {
+
+std::shared_ptr<NYdb::ICredentialsProviderFactory> WrapCredentialsProviderFactoryWithBearer(
+ std::shared_ptr<NYdb::ICredentialsProviderFactory> delegatee
+);
+
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/client/factory.cpp b/ydb/library/yql/providers/common/token_accessor/client/factory.cpp
index f849fec67b..755feab4a3 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/factory.cpp
+++ b/ydb/library/yql/providers/common/token_accessor/client/factory.cpp
@@ -1,84 +1,84 @@
-#include "factory.h"
-#include "bearer_credentials_provider.h"
-#include "token_accessor_client_factory.h"
+#include "factory.h"
+#include "bearer_credentials_provider.h"
+#include "token_accessor_client_factory.h"
#include <ydb/library/yql/providers/common/structured_token/yql_structured_token.h>
#include <ydb/library/yql/providers/common/structured_token/yql_token_builder.h>
-#include <util/string/cast.h>
-
-namespace NYql {
-
-namespace {
-
-class TSecuredServiceAccountCredentialsFactoryImpl : public ISecuredServiceAccountCredentialsFactory {
-public:
- TSecuredServiceAccountCredentialsFactoryImpl(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TDuration& refreshPeriod,
- const TDuration& requestTimeout
- )
- : TokenAccessorEndpoint(tokenAccessorEndpoint)
- , UseSsl(useSsl)
- , RefreshPeriod(refreshPeriod)
- , RequestTimeout(requestTimeout) {
- }
-
- std::shared_ptr<NYdb::ICredentialsProviderFactory> Create(const TString& serviceAccountId, const TString& serviceAccountIdSignature) override {
- Y_ENSURE(serviceAccountId);
- Y_ENSURE(serviceAccountIdSignature);
-
- return CreateTokenAccessorCredentialsProviderFactory(TokenAccessorEndpoint, UseSsl, serviceAccountId, serviceAccountIdSignature, RefreshPeriod, RequestTimeout);
- }
-
-private:
- const TString TokenAccessorEndpoint;
- const bool UseSsl;
- const TDuration RefreshPeriod;
- const TDuration RequestTimeout;
-};
-
-std::shared_ptr<NYdb::ICredentialsProviderFactory> WrapWithBearerIfNeeded(std::shared_ptr<NYdb::ICredentialsProviderFactory> delegatee, bool addBearerToToken) {
- if (!addBearerToToken) {
- return delegatee;
- }
- return WrapCredentialsProviderFactoryWithBearer(delegatee);
-}
-}
-
-ISecuredServiceAccountCredentialsFactory::TPtr CreateSecuredServiceAccountCredentialsOverTokenAccessorFactory(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TDuration& refreshPeriod,
- const TDuration& requestTimeout) {
- return std::make_shared<TSecuredServiceAccountCredentialsFactoryImpl>(tokenAccessorEndpoint, useSsl, refreshPeriod, requestTimeout);
-}
-
-std::shared_ptr<NYdb::ICredentialsProviderFactory> CreateCredentialsProviderFactoryForStructuredToken(ISecuredServiceAccountCredentialsFactory::TPtr factory, const TString& structuredTokenJson, bool addBearerToToken) {
- if (!NYql::IsStructuredTokenJson(structuredTokenJson)) {
- return WrapWithBearerIfNeeded(NYdb::CreateOAuthCredentialsProviderFactory(structuredTokenJson), addBearerToToken);
- }
-
- NYql::TStructuredTokenParser parser = NYql::CreateStructuredTokenParser(structuredTokenJson);
- if (parser.HasIAMToken()) {
- return WrapWithBearerIfNeeded(NYdb::CreateOAuthCredentialsProviderFactory(parser.GetIAMToken()), addBearerToToken); // OK for any static token (OAuth, IAM).
- }
-
- if (parser.HasServiceAccountIdAuth()) {
- TString id;
- TString signature;
- parser.GetServiceAccountIdAuth(id, signature);
-
- if (!factory) {
- ythrow yexception() << "Service account id credentials are not supported, service account id: " << id;
- }
- return WrapWithBearerIfNeeded(factory->Create(id, signature), addBearerToToken);
- }
-
- if (parser.IsNoAuth()) {
- return NYdb::CreateInsecureCredentialsProviderFactory();
- }
-
- ythrow yexception() << "Unrecognized token of length " << structuredTokenJson.size();
-}
-
-}
+#include <util/string/cast.h>
+
+namespace NYql {
+
+namespace {
+
+class TSecuredServiceAccountCredentialsFactoryImpl : public ISecuredServiceAccountCredentialsFactory {
+public:
+ TSecuredServiceAccountCredentialsFactoryImpl(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TDuration& refreshPeriod,
+ const TDuration& requestTimeout
+ )
+ : TokenAccessorEndpoint(tokenAccessorEndpoint)
+ , UseSsl(useSsl)
+ , RefreshPeriod(refreshPeriod)
+ , RequestTimeout(requestTimeout) {
+ }
+
+ std::shared_ptr<NYdb::ICredentialsProviderFactory> Create(const TString& serviceAccountId, const TString& serviceAccountIdSignature) override {
+ Y_ENSURE(serviceAccountId);
+ Y_ENSURE(serviceAccountIdSignature);
+
+ return CreateTokenAccessorCredentialsProviderFactory(TokenAccessorEndpoint, UseSsl, serviceAccountId, serviceAccountIdSignature, RefreshPeriod, RequestTimeout);
+ }
+
+private:
+ const TString TokenAccessorEndpoint;
+ const bool UseSsl;
+ const TDuration RefreshPeriod;
+ const TDuration RequestTimeout;
+};
+
+std::shared_ptr<NYdb::ICredentialsProviderFactory> WrapWithBearerIfNeeded(std::shared_ptr<NYdb::ICredentialsProviderFactory> delegatee, bool addBearerToToken) {
+ if (!addBearerToToken) {
+ return delegatee;
+ }
+ return WrapCredentialsProviderFactoryWithBearer(delegatee);
+}
+}
+
+ISecuredServiceAccountCredentialsFactory::TPtr CreateSecuredServiceAccountCredentialsOverTokenAccessorFactory(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TDuration& refreshPeriod,
+ const TDuration& requestTimeout) {
+ return std::make_shared<TSecuredServiceAccountCredentialsFactoryImpl>(tokenAccessorEndpoint, useSsl, refreshPeriod, requestTimeout);
+}
+
+std::shared_ptr<NYdb::ICredentialsProviderFactory> CreateCredentialsProviderFactoryForStructuredToken(ISecuredServiceAccountCredentialsFactory::TPtr factory, const TString& structuredTokenJson, bool addBearerToToken) {
+ if (!NYql::IsStructuredTokenJson(structuredTokenJson)) {
+ return WrapWithBearerIfNeeded(NYdb::CreateOAuthCredentialsProviderFactory(structuredTokenJson), addBearerToToken);
+ }
+
+ NYql::TStructuredTokenParser parser = NYql::CreateStructuredTokenParser(structuredTokenJson);
+ if (parser.HasIAMToken()) {
+ return WrapWithBearerIfNeeded(NYdb::CreateOAuthCredentialsProviderFactory(parser.GetIAMToken()), addBearerToToken); // OK for any static token (OAuth, IAM).
+ }
+
+ if (parser.HasServiceAccountIdAuth()) {
+ TString id;
+ TString signature;
+ parser.GetServiceAccountIdAuth(id, signature);
+
+ if (!factory) {
+ ythrow yexception() << "Service account id credentials are not supported, service account id: " << id;
+ }
+ return WrapWithBearerIfNeeded(factory->Create(id, signature), addBearerToToken);
+ }
+
+ if (parser.IsNoAuth()) {
+ return NYdb::CreateInsecureCredentialsProviderFactory();
+ }
+
+ ythrow yexception() << "Unrecognized token of length " << structuredTokenJson.size();
+}
+
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/client/factory.h b/ydb/library/yql/providers/common/token_accessor/client/factory.h
index 610fb773d6..b05dfc3c3d 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/factory.h
+++ b/ydb/library/yql/providers/common/token_accessor/client/factory.h
@@ -1,25 +1,25 @@
-#pragma once
-
+#pragma once
+
#include <ydb/public/sdk/cpp/client/ydb_types/credentials/credentials.h>
-#include <util/datetime/base.h>
-
-namespace NYql {
-
-class ISecuredServiceAccountCredentialsFactory {
-public:
- typedef std::shared_ptr<ISecuredServiceAccountCredentialsFactory> TPtr;
-
-public:
- virtual ~ISecuredServiceAccountCredentialsFactory() {}
- virtual std::shared_ptr<NYdb::ICredentialsProviderFactory> Create(const TString& serviceAccountId, const TString& serviceAccountIdSignature) = 0;
-};
-
-ISecuredServiceAccountCredentialsFactory::TPtr CreateSecuredServiceAccountCredentialsOverTokenAccessorFactory(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TDuration& refreshPeriod = TDuration::Hours(1),
- const TDuration& requestTimeout = TDuration::Seconds(10)
-);
-
-std::shared_ptr<NYdb::ICredentialsProviderFactory> CreateCredentialsProviderFactoryForStructuredToken(ISecuredServiceAccountCredentialsFactory::TPtr factory, const TString& structuredTokenJson, bool addBearerToToken = false);
-}
+#include <util/datetime/base.h>
+
+namespace NYql {
+
+class ISecuredServiceAccountCredentialsFactory {
+public:
+ typedef std::shared_ptr<ISecuredServiceAccountCredentialsFactory> TPtr;
+
+public:
+ virtual ~ISecuredServiceAccountCredentialsFactory() {}
+ virtual std::shared_ptr<NYdb::ICredentialsProviderFactory> Create(const TString& serviceAccountId, const TString& serviceAccountIdSignature) = 0;
+};
+
+ISecuredServiceAccountCredentialsFactory::TPtr CreateSecuredServiceAccountCredentialsOverTokenAccessorFactory(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TDuration& refreshPeriod = TDuration::Hours(1),
+ const TDuration& requestTimeout = TDuration::Seconds(10)
+);
+
+std::shared_ptr<NYdb::ICredentialsProviderFactory> CreateCredentialsProviderFactoryForStructuredToken(ISecuredServiceAccountCredentialsFactory::TPtr factory, const TString& structuredTokenJson, bool addBearerToToken = false);
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.cpp b/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.cpp
index 3d65263cb9..bacf735549 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.cpp
+++ b/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.cpp
@@ -1,185 +1,185 @@
-#include "token_accessor_client.h"
-
+#include "token_accessor_client.h"
+
#include <ydb/library/yql/providers/common/token_accessor/grpc/token_accessor_pb.pb.h>
#include <ydb/library/yql/providers/common/token_accessor/grpc/token_accessor_pb.grpc.pb.h>
-
-#include <library/cpp/grpc/client/grpc_client_low.h>
-#include <library/cpp/threading/atomic/bool.h>
-#include <library/cpp/threading/future/core/future.h>
-
-#include <util/string/builder.h>
-
-namespace NYql {
-
-namespace {
-
-const TDuration BACKOFF_START = TDuration::MilliSeconds(50);
-const TDuration BACKOFF_MAX = TDuration::Seconds(10);
-
-class TTokenAccessorCredentialsProvider : public NYdb::ICredentialsProvider {
-private:
- class TImpl : public std::enable_shared_from_this<TImpl> {
- public:
- TImpl(const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TString& serviceAccountId,
- const TString& serviceAccountIdSignature,
- const TDuration& refreshPeriod,
- const TDuration& requestTimeout)
- : Client(std::make_unique<NGrpc::TGRpcClientLow>())
- , NextTicketUpdate(TInstant::Zero())
- , TokenAccessorEndpoint(tokenAccessorEndpoint)
- , ServiceAccountId(serviceAccountId)
- , ServiceAccountIdSignature(serviceAccountIdSignature)
- , RefreshPeriod(refreshPeriod)
- , RequestTimeout(requestTimeout)
- , Infly(0)
- {
- NGrpc::TGRpcClientConfig grpcConf;
- grpcConf.Locator = tokenAccessorEndpoint;
- grpcConf.EnableSsl = useSsl;
- Connection = Client->CreateGRpcServiceConnection<TokenAccessorService>(grpcConf);
- }
-
- void UpdateTicket(bool sync = false) const {
- if (NeedStop || RequestInflight) {
- return;
- }
-
- RequestInflight = true;
- auto resultPromise = NThreading::NewPromise();
-
- std::shared_ptr<const TImpl> self = shared_from_this();
- auto cb = [self, resultPromise, sync](NGrpc::TGrpcStatus&& status, GetTokenResponse&& result) mutable {
- self->ProcessResponse(std::move(status), std::move(result), sync);
- resultPromise.SetValue();
- };
-
- GetTokenRequest req;
- req.set_type(GetTokenRequest::TYPE_SERVICE_ACCOUNT);
- req.set_token_id(ServiceAccountId);
- req.set_signature(ServiceAccountIdSignature);
- with_lock(Lock) {
- Infly++;
- Connection->DoRequest<GetTokenRequest, GetTokenResponse>(
- std::move(req),
- std::move(cb),
- &TokenAccessorService::Stub::AsyncGetToken,
- {
- {}, {}, RequestTimeout
- }
- );
- }
- if (sync) {
- resultPromise.GetFuture().Wait(RequestTimeout + TDuration::Seconds(10));
- }
- }
-
- TString GetTicket() const {
- TInstant nextTicketUpdate;
- TString ticket;
- with_lock(Lock) {
- ticket = Ticket;
- nextTicketUpdate = NextTicketUpdate;
- if (ticket.empty()) {
- ythrow yexception() << "IAM-token not ready yet. " << LastRequestError;
- }
- }
- if (TInstant::Now() >= nextTicketUpdate) {
- UpdateTicket();
- }
- return ticket;
- }
-
- void Stop() {
- NeedStop = true;
-
- Client.reset(); // Will trigger destroy
- }
-
- private:
- void ProcessResponse(NGrpc::TGrpcStatus&& status, GetTokenResponse&& result, bool sync) const {
- if (!status.Ok()) {
- with_lock(Lock) {
- --Infly;
- LastRequestError = TStringBuilder() << "Last request error was at " << TInstant::Now()
- << ". GrpcStatusCode: " << status.GRpcStatusCode << " Message: \"" << status.Msg
- << "\" internal: " << status.InternalError << " token accessor endpoint: \"" << TokenAccessorEndpoint << "\"";
- }
- RequestInflight = false;
- Sleep(std::min(BackoffTimeout, BACKOFF_MAX));
- BackoffTimeout *= 2;
- UpdateTicket(sync);
- } else {
- with_lock(Lock) {
- --Infly;
- LastRequestError = "";
- Ticket = result.token();
- NextTicketUpdate = TInstant::Now() + RefreshPeriod - RequestTimeout;
- }
- RequestInflight = false;
- BackoffTimeout = BACKOFF_START;
- }
- }
-
- private:
- std::unique_ptr<NGrpc::TGRpcClientLow> Client;
- std::unique_ptr<NGrpc::TServiceConnection<TokenAccessorService>> Connection;
- mutable TString Ticket;
- mutable TInstant NextTicketUpdate;
- const TString TokenAccessorEndpoint;
- const TString ServiceAccountId;
- const TString ServiceAccountIdSignature;
- const TDuration RefreshPeriod;
- const TDuration RequestTimeout;
- TAdaptiveLock Lock;
- mutable NAtomic::TBool RequestInflight;
- mutable TString LastRequestError;
- NAtomic::TBool NeedStop = false;
- mutable TDuration BackoffTimeout = BACKOFF_START;
- mutable ui32 Infly;
- };
-
-public:
- TTokenAccessorCredentialsProvider(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TString& serviceAccountId,
- const TString& serviceAccountIdSignature,
- const TDuration& refreshPeriod,
- const TDuration& requestTimeout
- )
- : Impl(std::make_shared<TImpl>(tokenAccessorEndpoint, useSsl, serviceAccountId, serviceAccountIdSignature, refreshPeriod, requestTimeout))
- {
- Impl->UpdateTicket(true);
- }
-
- ~TTokenAccessorCredentialsProvider() {
- Impl->Stop();
- }
-
- TString GetAuthInfo() const override {
- return Impl->GetTicket();
- }
-
- bool IsValid() const override {
- return true;
- }
-
-private:
- std::shared_ptr<TImpl> Impl;
-};
-
-}
-
-std::shared_ptr<NYdb::ICredentialsProvider> CreateTokenAccessorCredentialsProvider(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TString& serviceAccountId,
- const TString& serviceAccountIdSignature,
- const TDuration& refreshPeriod,
- const TDuration& requestTimeout
-) {
- return std::make_shared<TTokenAccessorCredentialsProvider>(tokenAccessorEndpoint, useSsl, serviceAccountId, serviceAccountIdSignature, refreshPeriod, requestTimeout);
-}
-}
+
+#include <library/cpp/grpc/client/grpc_client_low.h>
+#include <library/cpp/threading/atomic/bool.h>
+#include <library/cpp/threading/future/core/future.h>
+
+#include <util/string/builder.h>
+
+namespace NYql {
+
+namespace {
+
+const TDuration BACKOFF_START = TDuration::MilliSeconds(50);
+const TDuration BACKOFF_MAX = TDuration::Seconds(10);
+
+class TTokenAccessorCredentialsProvider : public NYdb::ICredentialsProvider {
+private:
+ class TImpl : public std::enable_shared_from_this<TImpl> {
+ public:
+ TImpl(const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TString& serviceAccountId,
+ const TString& serviceAccountIdSignature,
+ const TDuration& refreshPeriod,
+ const TDuration& requestTimeout)
+ : Client(std::make_unique<NGrpc::TGRpcClientLow>())
+ , NextTicketUpdate(TInstant::Zero())
+ , TokenAccessorEndpoint(tokenAccessorEndpoint)
+ , ServiceAccountId(serviceAccountId)
+ , ServiceAccountIdSignature(serviceAccountIdSignature)
+ , RefreshPeriod(refreshPeriod)
+ , RequestTimeout(requestTimeout)
+ , Infly(0)
+ {
+ NGrpc::TGRpcClientConfig grpcConf;
+ grpcConf.Locator = tokenAccessorEndpoint;
+ grpcConf.EnableSsl = useSsl;
+ Connection = Client->CreateGRpcServiceConnection<TokenAccessorService>(grpcConf);
+ }
+
+ void UpdateTicket(bool sync = false) const {
+ if (NeedStop || RequestInflight) {
+ return;
+ }
+
+ RequestInflight = true;
+ auto resultPromise = NThreading::NewPromise();
+
+ std::shared_ptr<const TImpl> self = shared_from_this();
+ auto cb = [self, resultPromise, sync](NGrpc::TGrpcStatus&& status, GetTokenResponse&& result) mutable {
+ self->ProcessResponse(std::move(status), std::move(result), sync);
+ resultPromise.SetValue();
+ };
+
+ GetTokenRequest req;
+ req.set_type(GetTokenRequest::TYPE_SERVICE_ACCOUNT);
+ req.set_token_id(ServiceAccountId);
+ req.set_signature(ServiceAccountIdSignature);
+ with_lock(Lock) {
+ Infly++;
+ Connection->DoRequest<GetTokenRequest, GetTokenResponse>(
+ std::move(req),
+ std::move(cb),
+ &TokenAccessorService::Stub::AsyncGetToken,
+ {
+ {}, {}, RequestTimeout
+ }
+ );
+ }
+ if (sync) {
+ resultPromise.GetFuture().Wait(RequestTimeout + TDuration::Seconds(10));
+ }
+ }
+
+ TString GetTicket() const {
+ TInstant nextTicketUpdate;
+ TString ticket;
+ with_lock(Lock) {
+ ticket = Ticket;
+ nextTicketUpdate = NextTicketUpdate;
+ if (ticket.empty()) {
+ ythrow yexception() << "IAM-token not ready yet. " << LastRequestError;
+ }
+ }
+ if (TInstant::Now() >= nextTicketUpdate) {
+ UpdateTicket();
+ }
+ return ticket;
+ }
+
+ void Stop() {
+ NeedStop = true;
+
+ Client.reset(); // Will trigger destroy
+ }
+
+ private:
+ void ProcessResponse(NGrpc::TGrpcStatus&& status, GetTokenResponse&& result, bool sync) const {
+ if (!status.Ok()) {
+ with_lock(Lock) {
+ --Infly;
+ LastRequestError = TStringBuilder() << "Last request error was at " << TInstant::Now()
+ << ". GrpcStatusCode: " << status.GRpcStatusCode << " Message: \"" << status.Msg
+ << "\" internal: " << status.InternalError << " token accessor endpoint: \"" << TokenAccessorEndpoint << "\"";
+ }
+ RequestInflight = false;
+ Sleep(std::min(BackoffTimeout, BACKOFF_MAX));
+ BackoffTimeout *= 2;
+ UpdateTicket(sync);
+ } else {
+ with_lock(Lock) {
+ --Infly;
+ LastRequestError = "";
+ Ticket = result.token();
+ NextTicketUpdate = TInstant::Now() + RefreshPeriod - RequestTimeout;
+ }
+ RequestInflight = false;
+ BackoffTimeout = BACKOFF_START;
+ }
+ }
+
+ private:
+ std::unique_ptr<NGrpc::TGRpcClientLow> Client;
+ std::unique_ptr<NGrpc::TServiceConnection<TokenAccessorService>> Connection;
+ mutable TString Ticket;
+ mutable TInstant NextTicketUpdate;
+ const TString TokenAccessorEndpoint;
+ const TString ServiceAccountId;
+ const TString ServiceAccountIdSignature;
+ const TDuration RefreshPeriod;
+ const TDuration RequestTimeout;
+ TAdaptiveLock Lock;
+ mutable NAtomic::TBool RequestInflight;
+ mutable TString LastRequestError;
+ NAtomic::TBool NeedStop = false;
+ mutable TDuration BackoffTimeout = BACKOFF_START;
+ mutable ui32 Infly;
+ };
+
+public:
+ TTokenAccessorCredentialsProvider(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TString& serviceAccountId,
+ const TString& serviceAccountIdSignature,
+ const TDuration& refreshPeriod,
+ const TDuration& requestTimeout
+ )
+ : Impl(std::make_shared<TImpl>(tokenAccessorEndpoint, useSsl, serviceAccountId, serviceAccountIdSignature, refreshPeriod, requestTimeout))
+ {
+ Impl->UpdateTicket(true);
+ }
+
+ ~TTokenAccessorCredentialsProvider() {
+ Impl->Stop();
+ }
+
+ TString GetAuthInfo() const override {
+ return Impl->GetTicket();
+ }
+
+ bool IsValid() const override {
+ return true;
+ }
+
+private:
+ std::shared_ptr<TImpl> Impl;
+};
+
+}
+
+std::shared_ptr<NYdb::ICredentialsProvider> CreateTokenAccessorCredentialsProvider(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TString& serviceAccountId,
+ const TString& serviceAccountIdSignature,
+ const TDuration& refreshPeriod,
+ const TDuration& requestTimeout
+) {
+ return std::make_shared<TTokenAccessorCredentialsProvider>(tokenAccessorEndpoint, useSsl, serviceAccountId, serviceAccountIdSignature, refreshPeriod, requestTimeout);
+}
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.h b/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.h
index b8bcd10dbc..c38c665399 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.h
+++ b/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client.h
@@ -1,17 +1,17 @@
-#pragma once
-
+#pragma once
+
#include <ydb/public/sdk/cpp/client/ydb_types/credentials/credentials.h>
-#include <util/datetime/base.h>
-
-namespace NYql {
-
-std::shared_ptr<NYdb::ICredentialsProvider> CreateTokenAccessorCredentialsProvider(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TString& serviceAccountId,
- const TString& serviceAccountIdSignature,
- const TDuration& refreshPeriod = TDuration::Hours(1),
- const TDuration& requestTimeout = TDuration::Seconds(10)
-);
-
-}
+#include <util/datetime/base.h>
+
+namespace NYql {
+
+std::shared_ptr<NYdb::ICredentialsProvider> CreateTokenAccessorCredentialsProvider(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TString& serviceAccountId,
+ const TString& serviceAccountIdSignature,
+ const TDuration& refreshPeriod = TDuration::Hours(1),
+ const TDuration& requestTimeout = TDuration::Seconds(10)
+);
+
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.cpp b/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.cpp
index b3105b220d..7103ee4a6e 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.cpp
+++ b/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.cpp
@@ -1,58 +1,58 @@
-#include "token_accessor_client_factory.h"
-#include "token_accessor_client.h"
-
-#include <util/string/cast.h>
-
-namespace NYql {
-
-namespace {
-
-class TTokenAccessorCredentialsProviderFactory : public NYdb::ICredentialsProviderFactory {
-public:
- TTokenAccessorCredentialsProviderFactory(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TString& serviceAccountId,
- const TString& serviceAccountIdSignature,
- const TDuration& refreshPeriod,
- const TDuration& requestTimeout
- )
- : TokenAccessorEndpoint(tokenAccessorEndpoint)
- , UseSsl(useSsl)
- , ServiceAccountId(serviceAccountId)
- , ServiceAccountIdSignature(serviceAccountIdSignature)
- , RefreshPeriod(refreshPeriod)
- , RequestTimeout(requestTimeout)
- {
- }
-
- TString GetClientIdentity() const override {
- return "TOKEN_ACCESSOR_CLIENT" + ToString((ui64)this);
- }
-
- std::shared_ptr<NYdb::ICredentialsProvider> CreateProvider() const override {
- return CreateTokenAccessorCredentialsProvider(TokenAccessorEndpoint, UseSsl, ServiceAccountId, ServiceAccountIdSignature, RefreshPeriod, RequestTimeout);
- }
-
-private:
- const TString TokenAccessorEndpoint;
- const bool UseSsl;
- const TString ServiceAccountId;
- const TString ServiceAccountIdSignature;
- const TDuration RefreshPeriod;
- const TDuration RequestTimeout;
-};
-
-}
-
-std::shared_ptr<NYdb::ICredentialsProviderFactory> CreateTokenAccessorCredentialsProviderFactory(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TString& serviceAccountId,
- const TString& serviceAccountIdSignature,
- const TDuration& refreshPeriod,
- const TDuration& requestTimeout)
-{
- return std::make_shared<TTokenAccessorCredentialsProviderFactory>(tokenAccessorEndpoint, useSsl, serviceAccountId, serviceAccountIdSignature, refreshPeriod, requestTimeout);
-}
-}
+#include "token_accessor_client_factory.h"
+#include "token_accessor_client.h"
+
+#include <util/string/cast.h>
+
+namespace NYql {
+
+namespace {
+
+class TTokenAccessorCredentialsProviderFactory : public NYdb::ICredentialsProviderFactory {
+public:
+ TTokenAccessorCredentialsProviderFactory(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TString& serviceAccountId,
+ const TString& serviceAccountIdSignature,
+ const TDuration& refreshPeriod,
+ const TDuration& requestTimeout
+ )
+ : TokenAccessorEndpoint(tokenAccessorEndpoint)
+ , UseSsl(useSsl)
+ , ServiceAccountId(serviceAccountId)
+ , ServiceAccountIdSignature(serviceAccountIdSignature)
+ , RefreshPeriod(refreshPeriod)
+ , RequestTimeout(requestTimeout)
+ {
+ }
+
+ TString GetClientIdentity() const override {
+ return "TOKEN_ACCESSOR_CLIENT" + ToString((ui64)this);
+ }
+
+ std::shared_ptr<NYdb::ICredentialsProvider> CreateProvider() const override {
+ return CreateTokenAccessorCredentialsProvider(TokenAccessorEndpoint, UseSsl, ServiceAccountId, ServiceAccountIdSignature, RefreshPeriod, RequestTimeout);
+ }
+
+private:
+ const TString TokenAccessorEndpoint;
+ const bool UseSsl;
+ const TString ServiceAccountId;
+ const TString ServiceAccountIdSignature;
+ const TDuration RefreshPeriod;
+ const TDuration RequestTimeout;
+};
+
+}
+
+std::shared_ptr<NYdb::ICredentialsProviderFactory> CreateTokenAccessorCredentialsProviderFactory(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TString& serviceAccountId,
+ const TString& serviceAccountIdSignature,
+ const TDuration& refreshPeriod,
+ const TDuration& requestTimeout)
+{
+ return std::make_shared<TTokenAccessorCredentialsProviderFactory>(tokenAccessorEndpoint, useSsl, serviceAccountId, serviceAccountIdSignature, refreshPeriod, requestTimeout);
+}
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.h b/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.h
index 7a9b4a9327..b73f9bf03d 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.h
+++ b/ydb/library/yql/providers/common/token_accessor/client/token_accessor_client_factory.h
@@ -1,18 +1,18 @@
-#pragma once
-
+#pragma once
+
#include <ydb/public/sdk/cpp/client/ydb_types/credentials/credentials.h>
-#include <util/datetime/base.h>
-
-namespace NYql {
-
-std::shared_ptr<NYdb::ICredentialsProviderFactory> CreateTokenAccessorCredentialsProviderFactory(
- const TString& tokenAccessorEndpoint,
- bool useSsl,
- const TString& serviceAccountId,
- const TString& serviceAccountIdSignature,
- const TDuration& refreshPeriod = TDuration::Hours(1),
- const TDuration& requestTimeout = TDuration::Seconds(10)
-);
-
-}
-
+#include <util/datetime/base.h>
+
+namespace NYql {
+
+std::shared_ptr<NYdb::ICredentialsProviderFactory> CreateTokenAccessorCredentialsProviderFactory(
+ const TString& tokenAccessorEndpoint,
+ bool useSsl,
+ const TString& serviceAccountId,
+ const TString& serviceAccountIdSignature,
+ const TDuration& refreshPeriod = TDuration::Hours(1),
+ const TDuration& requestTimeout = TDuration::Seconds(10)
+);
+
+}
+
diff --git a/ydb/library/yql/providers/common/token_accessor/client/ya.make b/ydb/library/yql/providers/common/token_accessor/client/ya.make
index 99338525cf..c05860d49e 100644
--- a/ydb/library/yql/providers/common/token_accessor/client/ya.make
+++ b/ydb/library/yql/providers/common/token_accessor/client/ya.make
@@ -1,20 +1,20 @@
OWNER(g:yq)
-
-LIBRARY()
-
-SRCS(
- bearer_credentials_provider.cpp
- factory.cpp
- token_accessor_client.cpp
- token_accessor_client_factory.cpp
-)
-
-PEERDIR(
- library/cpp/grpc/client
- library/cpp/threading/future
+
+LIBRARY()
+
+SRCS(
+ bearer_credentials_provider.cpp
+ factory.cpp
+ token_accessor_client.cpp
+ token_accessor_client_factory.cpp
+)
+
+PEERDIR(
+ library/cpp/grpc/client
+ library/cpp/threading/future
ydb/library/yql/providers/common/structured_token
ydb/library/yql/providers/common/token_accessor/grpc
ydb/public/sdk/cpp/client/ydb_types/credentials
-)
-
-END()
+)
+
+END()
diff --git a/ydb/library/yql/providers/common/token_accessor/grpc/token_accessor_pb.proto b/ydb/library/yql/providers/common/token_accessor/grpc/token_accessor_pb.proto
index ff2ae3e056..5ab2b24a1b 100644
--- a/ydb/library/yql/providers/common/token_accessor/grpc/token_accessor_pb.proto
+++ b/ydb/library/yql/providers/common/token_accessor/grpc/token_accessor_pb.proto
@@ -1,24 +1,24 @@
-syntax = "proto3";
-
-package NYql;
-
+syntax = "proto3";
+
+package NYql;
+
option go_package = "a.yandex-team.ru/ydb/library/yql/providers/common/token_accessor/grpc;token_accessor_pb";
-
-service TokenAccessorService {
- rpc GetToken(GetTokenRequest) returns (GetTokenResponse) {}
-}
-
-message GetTokenRequest {
- enum Type {
- TYPE_UNKNOWN = 0;
- TYPE_SERVICE_ACCOUNT = 1;
- }
-
- Type type = 1;
- string token_id = 2;
- string signature = 3;
-}
-
-message GetTokenResponse {
- bytes token = 3;
-}
+
+service TokenAccessorService {
+ rpc GetToken(GetTokenRequest) returns (GetTokenResponse) {}
+}
+
+message GetTokenRequest {
+ enum Type {
+ TYPE_UNKNOWN = 0;
+ TYPE_SERVICE_ACCOUNT = 1;
+ }
+
+ Type type = 1;
+ string token_id = 2;
+ string signature = 3;
+}
+
+message GetTokenResponse {
+ bytes token = 3;
+}
diff --git a/ydb/library/yql/providers/common/token_accessor/grpc/ya.make b/ydb/library/yql/providers/common/token_accessor/grpc/ya.make
index 2297218e2b..3a1d6d4024 100644
--- a/ydb/library/yql/providers/common/token_accessor/grpc/ya.make
+++ b/ydb/library/yql/providers/common/token_accessor/grpc/ya.make
@@ -1,13 +1,13 @@
OWNER(g:yq)
-PROTO_LIBRARY()
+PROTO_LIBRARY()
-INCLUDE_TAGS(GO_PROTO)
+INCLUDE_TAGS(GO_PROTO)
+
+GRPC()
-GRPC()
-
-SRCS(
- token_accessor_pb.proto
-)
-
-END()
+SRCS(
+ token_accessor_pb.proto
+)
+
+END()
diff --git a/ydb/library/yql/providers/common/token_accessor/ya.make b/ydb/library/yql/providers/common/token_accessor/ya.make
index 119cbb9c4b..bded9e3ea9 100644
--- a/ydb/library/yql/providers/common/token_accessor/ya.make
+++ b/ydb/library/yql/providers/common/token_accessor/ya.make
@@ -1,4 +1,4 @@
-RECURSE(
- client
- grpc
-)
+RECURSE(
+ client
+ grpc
+)
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_files_box.cpp b/ydb/library/yql/providers/common/udf_resolve/yql_files_box.cpp
index 95fe68f080..c3e798a874 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_files_box.cpp
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_files_box.cpp
@@ -1,39 +1,39 @@
-#include "yql_files_box.h"
-
+#include "yql_files_box.h"
+
#include <ydb/library/yql/core/file_storage/storage.h>
#include <ydb/library/yql/utils/log/log.h>
-#include <util/system/fs.h>
+#include <util/system/fs.h>
#include <util/system/error.h>
#include <util/system/sysstat.h>
#include <util/folder/dirut.h>
-
-namespace NYql {
-namespace NCommon {
-
-TFilesBox::TFilesBox(TFsPath dir, TRandGuid randGuid)
- : Dir(std::move(dir))
- , RandGuid(std::move(randGuid))
-{
-}
-
-TFilesBox::~TFilesBox() {
- try {
- Destroy();
- } catch (...) {
- YQL_LOG(ERROR) << "Error occurred in files box destroy: " << CurrentExceptionMessage();
- }
-}
-
-TString TFilesBox::MakeLinkFrom(const TString& source, const TString& filename) {
- if (!filename) {
- if (auto* existingPath = Mapping.FindPtr(source)) {
- return *existingPath;
- }
- }
-
- TFsPath sourcePath(source);
- TString sourceAbsolutePath = sourcePath.IsAbsolute() ? source : (TFsPath::Cwd() / sourcePath).GetPath();
+
+namespace NYql {
+namespace NCommon {
+
+TFilesBox::TFilesBox(TFsPath dir, TRandGuid randGuid)
+ : Dir(std::move(dir))
+ , RandGuid(std::move(randGuid))
+{
+}
+
+TFilesBox::~TFilesBox() {
+ try {
+ Destroy();
+ } catch (...) {
+ YQL_LOG(ERROR) << "Error occurred in files box destroy: " << CurrentExceptionMessage();
+ }
+}
+
+TString TFilesBox::MakeLinkFrom(const TString& source, const TString& filename) {
+ if (!filename) {
+ if (auto* existingPath = Mapping.FindPtr(source)) {
+ return *existingPath;
+ }
+ }
+
+ TFsPath sourcePath(source);
+ TString sourceAbsolutePath = sourcePath.IsAbsolute() ? source : (TFsPath::Cwd() / sourcePath).GetPath();
TString path;
if (filename) {
path = Dir / filename;
@@ -49,24 +49,24 @@ TString TFilesBox::MakeLinkFrom(const TString& source, const TString& filename)
ythrow TSystemError() << "Failed to create symlink for file " << sourceAbsolutePath.Quote() << " to file " << path.Quote();
}
}
- Mapping.emplace(source, path);
- }
- return path;
-}
-
-TString TFilesBox::GetDir() const {
- return Dir;
-}
-
-void TFilesBox::Destroy() {
- Mapping.clear();
- Dir.ForceDelete();
-}
-
-THolder<TFilesBox> CreateFilesBox(const TFsPath& baseDir) {
- TRandGuid randGuid;
- TFsPath path = baseDir / randGuid.GenGuid();
-
+ Mapping.emplace(source, path);
+ }
+ return path;
+}
+
+TString TFilesBox::GetDir() const {
+ return Dir;
+}
+
+void TFilesBox::Destroy() {
+ Mapping.clear();
+ Dir.ForceDelete();
+}
+
+THolder<TFilesBox> CreateFilesBox(const TFsPath& baseDir) {
+ TRandGuid randGuid;
+ TFsPath path = baseDir / randGuid.GenGuid();
+
while (true) {
if (!path.Exists()) {
int r = Mkdir(path.c_str(), MODE0711);
@@ -80,8 +80,8 @@ THolder<TFilesBox> CreateFilesBox(const TFsPath& baseDir) {
path = baseDir / randGuid.GenGuid();
}
- return MakeHolder<TFilesBox>(std::move(path), std::move(randGuid));
-}
-
-}
-}
+ return MakeHolder<TFilesBox>(std::move(path), std::move(randGuid));
+}
+
+}
+}
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_files_box.h b/ydb/library/yql/providers/common/udf_resolve/yql_files_box.h
index fd7b778ab4..64b4f67832 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_files_box.h
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_files_box.h
@@ -1,33 +1,33 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/utils/rand_guid.h>
-
-#include <util/generic/hash.h>
-#include <util/folder/path.h>
-
-namespace NYql {
-namespace NCommon {
-
-/*
- Resembles sandbox for external UDFs
-*/
-class TFilesBox {
-public:
- TFilesBox(TFsPath dir, TRandGuid randGuid);
- ~TFilesBox();
-
- TString MakeLinkFrom(const TString& source, const TString& filename = {});
- TString GetDir() const;
-
- void Destroy();
-
-private:
- TFsPath Dir;
- TRandGuid RandGuid;
- THashMap<TString, TString> Mapping;
-};
-
-THolder<TFilesBox> CreateFilesBox(const TFsPath& baseDir);
-
-}
-}
+
+#include <util/generic/hash.h>
+#include <util/folder/path.h>
+
+namespace NYql {
+namespace NCommon {
+
+/*
+ Resembles sandbox for external UDFs
+*/
+class TFilesBox {
+public:
+ TFilesBox(TFsPath dir, TRandGuid randGuid);
+ ~TFilesBox();
+
+ TString MakeLinkFrom(const TString& source, const TString& filename = {});
+ TString GetDir() const;
+
+ void Destroy();
+
+private:
+ TFsPath Dir;
+ TRandGuid RandGuid;
+ THashMap<TString, TString> Mapping;
+};
+
+THolder<TFilesBox> CreateFilesBox(const TFsPath& baseDir);
+
+}
+}
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp b/ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp
index dc31e0ef30..1e23aa00e9 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp
@@ -1,6 +1,6 @@
#include "yql_outproc_udf_resolver.h"
-#include "yql_simple_udf_resolver.h"
-#include "yql_files_box.h"
+#include "yql_simple_udf_resolver.h"
+#include "yql_files_box.h"
#include <ydb/library/yql/providers/common/proto/udf_resolver.pb.h>
#include <ydb/library/yql/providers/common/schema/expr/yql_expr_schema.h>
@@ -16,13 +16,13 @@
#include <library/cpp/protobuf/util/pb_io.h>
-#include <util/generic/scope.h>
+#include <util/generic/scope.h>
#include <util/stream/str.h>
#include <util/string/strip.h>
#include <util/system/shellcommand.h>
#include <util/string/split.h>
-#include <regex>
+#include <regex>
namespace NYql {
namespace NCommon {
@@ -30,151 +30,151 @@ namespace NCommon {
using namespace NKikimr;
using namespace NKikimr::NMiniKQL;
-namespace {
-template <typename F>
-void RunResolver(
- const TString& resolverPath,
- const TList<TString>& args,
- IInputStream* input,
- const F& outputHandler,
- const TString& ldLibraryPath = {}) {
-
- TShellCommandOptions shellOptions;
- shellOptions
- .SetUseShell(false)
- .SetDetachSession(false)
- .SetInputStream(input); // input can be nullptr
-
- if (ldLibraryPath) {
- YQL_LOG(DEBUG) << "Using LD_LIBRARY_PATH = " << ldLibraryPath << " for Udf resolver";
- shellOptions.Environment["LD_LIBRARY_PATH"] = ldLibraryPath;
- }
-
- TShellCommand shell(resolverPath, args, shellOptions);
-
- switch (shell.Run().GetStatus()) {
- case TShellCommand::SHELL_INTERNAL_ERROR:
- ythrow yexception() << "Udf resolver internal error: "
- << shell.GetInternalError();
- case TShellCommand::SHELL_ERROR:
- ythrow yexception() << "Udf resolver shell error: "
- << StripString(shell.GetError());
- case TShellCommand::SHELL_FINISHED:
- break;
- default:
- ythrow yexception() << "Unexpected udf resolver state: "
- << int(shell.GetStatus());
- }
-
- if (shell.GetError()) {
- YQL_LOG(INFO) << "UdfResolver stderr: " << shell.GetError();
- }
-
- outputHandler(shell.GetOutput());
-}
-
-template <typename F>
-void RunResolver(
- const TString& resolverPath,
- const TList<TString>& args,
- const TResolve& request,
- const F& outputHandler,
- const TString& ldLibraryPath = {}) {
-
- TStringStream input;
+namespace {
+template <typename F>
+void RunResolver(
+ const TString& resolverPath,
+ const TList<TString>& args,
+ IInputStream* input,
+ const F& outputHandler,
+ const TString& ldLibraryPath = {}) {
+
+ TShellCommandOptions shellOptions;
+ shellOptions
+ .SetUseShell(false)
+ .SetDetachSession(false)
+ .SetInputStream(input); // input can be nullptr
+
+ if (ldLibraryPath) {
+ YQL_LOG(DEBUG) << "Using LD_LIBRARY_PATH = " << ldLibraryPath << " for Udf resolver";
+ shellOptions.Environment["LD_LIBRARY_PATH"] = ldLibraryPath;
+ }
+
+ TShellCommand shell(resolverPath, args, shellOptions);
+
+ switch (shell.Run().GetStatus()) {
+ case TShellCommand::SHELL_INTERNAL_ERROR:
+ ythrow yexception() << "Udf resolver internal error: "
+ << shell.GetInternalError();
+ case TShellCommand::SHELL_ERROR:
+ ythrow yexception() << "Udf resolver shell error: "
+ << StripString(shell.GetError());
+ case TShellCommand::SHELL_FINISHED:
+ break;
+ default:
+ ythrow yexception() << "Unexpected udf resolver state: "
+ << int(shell.GetStatus());
+ }
+
+ if (shell.GetError()) {
+ YQL_LOG(INFO) << "UdfResolver stderr: " << shell.GetError();
+ }
+
+ outputHandler(shell.GetOutput());
+}
+
+template <typename F>
+void RunResolver(
+ const TString& resolverPath,
+ const TList<TString>& args,
+ const TResolve& request,
+ const F& outputHandler,
+ const TString& ldLibraryPath = {}) {
+
+ TStringStream input;
YQL_ENSURE(request.SerializeToArcadiaStream(&input), "Cannot serialize TResolve proto message");
- RunResolver(resolverPath, args, &input, outputHandler, ldLibraryPath);
-}
-
-TString ExtractSharedObjectNameFromErrorMessage(const char* message) {
- if (!message) {
- return "";
- }
-
- // example:
- // util/system/dynlib.cpp:56: libcuda.so.1: cannot open shared object file: No such file or directory
- static std::regex re(".*: (.+): cannot open shared object file: No such file or directory");
- std::cmatch match;
- if (!std::regex_match(message, match, re)) {
- return "";
- }
-
- return TString(match[1].str());
-}
-}
-
+ RunResolver(resolverPath, args, &input, outputHandler, ldLibraryPath);
+}
+
+TString ExtractSharedObjectNameFromErrorMessage(const char* message) {
+ if (!message) {
+ return "";
+ }
+
+ // example:
+ // util/system/dynlib.cpp:56: libcuda.so.1: cannot open shared object file: No such file or directory
+ static std::regex re(".*: (.+): cannot open shared object file: No such file or directory");
+ std::cmatch match;
+ if (!std::regex_match(message, match, re)) {
+ return "";
+ }
+
+ return TString(match[1].str());
+}
+}
+
class TOutProcUdfResolver : public IUdfResolver {
public:
TOutProcUdfResolver(const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
- const TFileStoragePtr& fileStorage, const TString& resolverPath,
+ const TFileStoragePtr& fileStorage, const TString& resolverPath,
const TString& user, const TString& group, bool filterSyscalls,
const TString& udfDependencyStubPath, const TMap<TString, TString>& path2md5)
: FunctionRegistry_(functionRegistry)
- , TypeInfoHelper_(new TTypeInfoHelper)
+ , TypeInfoHelper_(new TTypeInfoHelper)
, FileStorage_(fileStorage)
, ResolverPath_(resolverPath)
- , UdfDependencyStubPath_(udfDependencyStubPath)
- , Path2Md5_(path2md5)
- {
- if (user) {
- UserGroupArgs_ = { "-U", user, "-G", group };
- }
+ , UdfDependencyStubPath_(udfDependencyStubPath)
+ , Path2Md5_(path2md5)
+ {
+ if (user) {
+ UserGroupArgs_ = { "-U", user, "-G", group };
+ }
if (filterSyscalls) {
UserGroupArgs_.push_back("-F");
}
+ }
+
+ TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const override {
+ auto path = FunctionRegistry_->FindUdfPath(moduleName);
+ if (!path) {
+ return Nothing();
+ }
+
+ const TString md5 = Path2Md5_.Value(*path, "");
+ return MakeMaybe<TFilePathWithMd5>(*path, md5);
}
- TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const override {
- auto path = FunctionRegistry_->FindUdfPath(moduleName);
- if (!path) {
- return Nothing();
- }
-
- const TString md5 = Path2Md5_.Value(*path, "");
- return MakeMaybe<TFilePathWithMd5>(*path, md5);
- }
-
- bool LoadMetadata(const TVector<TImport*>& imports, const TVector<TFunction*>& functions, TExprContext& ctx) const override {
- THashSet<TString> requiredLoadedModules;
- THashSet<TString> requiredExternalModules;
- TVector<TFunction*> loadedFunctions;
- TVector<TFunction*> externalFunctions;
-
+ bool LoadMetadata(const TVector<TImport*>& imports, const TVector<TFunction*>& functions, TExprContext& ctx) const override {
+ THashSet<TString> requiredLoadedModules;
+ THashSet<TString> requiredExternalModules;
+ TVector<TFunction*> loadedFunctions;
+ TVector<TFunction*> externalFunctions;
+
bool hasErrors = false;
- for (auto udf : functions) {
+ for (auto udf : functions) {
TStringBuf moduleName, funcName;
if (!SplitUdfName(udf->Name, moduleName, funcName) || moduleName.empty() || funcName.empty()) {
ctx.AddError(TIssue(udf->Pos, TStringBuilder() <<
"Incorrect format of function name: " << udf->Name));
hasErrors = true;
} else {
- if (FunctionRegistry_->IsLoadedUdfModule(moduleName)) {
- requiredLoadedModules.insert(TString(moduleName));
- loadedFunctions.push_back(udf);
- } else {
- requiredExternalModules.insert(TString(moduleName));
- externalFunctions.push_back(udf);
- }
+ if (FunctionRegistry_->IsLoadedUdfModule(moduleName)) {
+ requiredLoadedModules.insert(TString(moduleName));
+ loadedFunctions.push_back(udf);
+ } else {
+ requiredExternalModules.insert(TString(moduleName));
+ externalFunctions.push_back(udf);
+ }
}
}
TResolve request;
THashMap<TString, TImport*> importMap;
- THoldingFileStorage holdingFileStorage(FileStorage_);
- THolder<TFilesBox> filesBox = CreateFilesBoxOverFileStorageTemp();
+ THoldingFileStorage holdingFileStorage(FileStorage_);
+ THolder<TFilesBox> filesBox = CreateFilesBoxOverFileStorageTemp();
- THashMap<TString, TImport*> path2LoadedImport;
- for (auto import : imports) {
+ THashMap<TString, TImport*> path2LoadedImport;
+ for (auto import : imports) {
if (import->Modules) {
bool needLibrary = false;
for (auto& m : *import->Modules) {
- if (requiredLoadedModules.contains(m)) {
- YQL_ENSURE(import->Block->Type == EUserDataType::PATH);
- path2LoadedImport[import->Block->Data] = import;
- }
-
- if (requiredExternalModules.contains(m)) {
+ if (requiredLoadedModules.contains(m)) {
+ YQL_ENSURE(import->Block->Type == EUserDataType::PATH);
+ path2LoadedImport[import->Block->Data] = import;
+ }
+
+ if (requiredExternalModules.contains(m)) {
needLibrary = true;
break;
}
@@ -183,32 +183,32 @@ public:
if (!needLibrary) {
continue;
}
- } else {
- import->Modules.ConstructInPlace();
+ } else {
+ import->Modules.ConstructInPlace();
}
importMap[import->FileAlias] = import;
try {
- LoadImport(holdingFileStorage, *filesBox, *import, request);
+ LoadImport(holdingFileStorage, *filesBox, *import, request);
} catch (const std::exception& e) {
ctx.AddError(ExceptionToIssue(e));
hasErrors = true;
}
}
- for (auto& module : requiredExternalModules) {
+ for (auto& module : requiredExternalModules) {
if (auto path = FunctionRegistry_->FindUdfPath(module)) {
auto importRequest = request.AddImports();
- const TString hiddenPath = filesBox->MakeLinkFrom(*path);
- importRequest->SetFileAlias(hiddenPath);
- importRequest->SetPath(hiddenPath);
+ const TString hiddenPath = filesBox->MakeLinkFrom(*path);
+ importRequest->SetFileAlias(hiddenPath);
+ importRequest->SetPath(hiddenPath);
importRequest->SetSystem(true);
}
}
-
- for (auto udf : externalFunctions) {
+
+ for (auto udf : externalFunctions) {
auto udfRequest = request.AddUdfs();
udfRequest->SetName(udf->Name);
udfRequest->SetTypeConfig(udf->TypeConfig);
@@ -217,106 +217,106 @@ public:
}
}
- TResolveResult response;
- try {
- response = RunResolverAndParseResult(request, { }, *filesBox);
- filesBox->Destroy();
- } catch (const std::exception& e) {
- ctx.AddError(ExceptionToIssue(e));
+ TResolveResult response;
+ try {
+ response = RunResolverAndParseResult(request, { }, *filesBox);
+ filesBox->Destroy();
+ } catch (const std::exception& e) {
+ ctx.AddError(ExceptionToIssue(e));
return false;
}
-
- // extract regardless of hasErrors value
- hasErrors = !ExtractMetadata(response, importMap, externalFunctions, ctx) || hasErrors;
- hasErrors = !LoadFunctionsMetadata(loadedFunctions, *FunctionRegistry_, TypeInfoHelper_, ctx) || hasErrors;
-
- if (!hasErrors) {
- for (auto& m : FunctionRegistry_->GetAllModuleNames()) {
- auto path = *FunctionRegistry_->FindUdfPath(m);
- if (auto import = path2LoadedImport.FindPtr(path)) {
- (*import)->Modules->push_back(m);
- }
- }
- }
-
- return !hasErrors;
- }
-
- TResolveResult LoadRichMetadata(const TVector<TImport>& imports) const override {
- TResolve request;
- THoldingFileStorage holdingFileStorage(FileStorage_);
- THolder<TFilesBox> filesBox = CreateFilesBoxOverFileStorageTemp();
- Y_DEFER {
- filesBox->Destroy();
- };
-
- for (auto import : imports) {
- LoadImport(holdingFileStorage, *filesBox, import, request);
- }
-
- return RunResolverAndParseResult(request, { "--discover-proto" }, *filesBox);
- }
-
-private:
- THolder<TFilesBox> CreateFilesBoxOverFileStorageTemp() const {
- return CreateFilesBox(FileStorage_->GetTemp());
- }
-
- void LoadImport(THoldingFileStorage& holdingFileStorage, TFilesBox& filesBox, const TImport& import, TResolve& request) const {
- const TString path = (import.Block->Type == EUserDataType::PATH) ? import.Block->Data : holdingFileStorage.FreezeFile(*import.Block)->GetPath().GetPath();
-
- const TString hiddenPath = filesBox.MakeLinkFrom(path);
- auto importRequest = request.AddImports();
- importRequest->SetFileAlias(import.FileAlias);
- importRequest->SetPath(hiddenPath);
- }
-
- TResolveResult RunResolverAndParseResult(const TResolve& request, const TVector<TString>& additionalArgs, TFilesBox& filesBox) const {
- auto args = UserGroupArgs_;
- args.insert(args.end(), additionalArgs.begin(), additionalArgs.end());
-
- TString ldLibraryPath;
- TSet<TString> stubbedLibraries;
- return WithRetry<yexception>(10, [&]() {
- TResolveResult response;
- RunResolver(ResolverPath_, args, request, [&](const TString& output) {
- YQL_ENSURE(response.ParseFromString(output), "Cannot deserialize TResolveResult proto message");
- }, ldLibraryPath);
- return response;
- }, [&](const yexception& e, int, int) {
- TStringStream stream;
- SerializeToTextFormat(request, stream);
- YQL_LOG(DEBUG) << "Exception from UdfResolver: " << e.what() << " for request " << stream.Str();
- if (!UdfDependencyStubPath_) {
- YQL_LOG(DEBUG) << "UdfDependencyStubPath is not specified, unable to recover error " << e.what();
- throw e;
- }
-
- TString sharedLibrary = ExtractSharedObjectNameFromErrorMessage(e.what());
- if (!sharedLibrary) {
- throw e;
- }
-
- YQL_LOG(DEBUG) << "UdfResolver needs shared library " << sharedLibrary;
- if (!stubbedLibraries.emplace(sharedLibrary).second) {
- // already tried, giving up
- YQL_LOG(ERROR) << "Unable to load shared library " << sharedLibrary << " even after using dependency stub";
- throw e;
- }
-
- YQL_LOG(DEBUG) << "Using dependency stub for shared library " << sharedLibrary;
- PutSharedLibraryStub(sharedLibrary, filesBox);
- ldLibraryPath = filesBox.GetDir();
- });
- }
-
- void PutSharedLibraryStub(const TString& sharedLibrary, TFilesBox& filesBox) const {
- YQL_ENSURE(UdfDependencyStubPath_);
- filesBox.MakeLinkFrom(UdfDependencyStubPath_, sharedLibrary);
- }
-
- static bool ExtractMetadata(const TResolveResult& response, const THashMap<TString, TImport*>& importMap, const TVector<TFunction*>& functions, TExprContext& ctx) {
- bool hasErrors = false;
+
+ // extract regardless of hasErrors value
+ hasErrors = !ExtractMetadata(response, importMap, externalFunctions, ctx) || hasErrors;
+ hasErrors = !LoadFunctionsMetadata(loadedFunctions, *FunctionRegistry_, TypeInfoHelper_, ctx) || hasErrors;
+
+ if (!hasErrors) {
+ for (auto& m : FunctionRegistry_->GetAllModuleNames()) {
+ auto path = *FunctionRegistry_->FindUdfPath(m);
+ if (auto import = path2LoadedImport.FindPtr(path)) {
+ (*import)->Modules->push_back(m);
+ }
+ }
+ }
+
+ return !hasErrors;
+ }
+
+ TResolveResult LoadRichMetadata(const TVector<TImport>& imports) const override {
+ TResolve request;
+ THoldingFileStorage holdingFileStorage(FileStorage_);
+ THolder<TFilesBox> filesBox = CreateFilesBoxOverFileStorageTemp();
+ Y_DEFER {
+ filesBox->Destroy();
+ };
+
+ for (auto import : imports) {
+ LoadImport(holdingFileStorage, *filesBox, import, request);
+ }
+
+ return RunResolverAndParseResult(request, { "--discover-proto" }, *filesBox);
+ }
+
+private:
+ THolder<TFilesBox> CreateFilesBoxOverFileStorageTemp() const {
+ return CreateFilesBox(FileStorage_->GetTemp());
+ }
+
+ void LoadImport(THoldingFileStorage& holdingFileStorage, TFilesBox& filesBox, const TImport& import, TResolve& request) const {
+ const TString path = (import.Block->Type == EUserDataType::PATH) ? import.Block->Data : holdingFileStorage.FreezeFile(*import.Block)->GetPath().GetPath();
+
+ const TString hiddenPath = filesBox.MakeLinkFrom(path);
+ auto importRequest = request.AddImports();
+ importRequest->SetFileAlias(import.FileAlias);
+ importRequest->SetPath(hiddenPath);
+ }
+
+ TResolveResult RunResolverAndParseResult(const TResolve& request, const TVector<TString>& additionalArgs, TFilesBox& filesBox) const {
+ auto args = UserGroupArgs_;
+ args.insert(args.end(), additionalArgs.begin(), additionalArgs.end());
+
+ TString ldLibraryPath;
+ TSet<TString> stubbedLibraries;
+ return WithRetry<yexception>(10, [&]() {
+ TResolveResult response;
+ RunResolver(ResolverPath_, args, request, [&](const TString& output) {
+ YQL_ENSURE(response.ParseFromString(output), "Cannot deserialize TResolveResult proto message");
+ }, ldLibraryPath);
+ return response;
+ }, [&](const yexception& e, int, int) {
+ TStringStream stream;
+ SerializeToTextFormat(request, stream);
+ YQL_LOG(DEBUG) << "Exception from UdfResolver: " << e.what() << " for request " << stream.Str();
+ if (!UdfDependencyStubPath_) {
+ YQL_LOG(DEBUG) << "UdfDependencyStubPath is not specified, unable to recover error " << e.what();
+ throw e;
+ }
+
+ TString sharedLibrary = ExtractSharedObjectNameFromErrorMessage(e.what());
+ if (!sharedLibrary) {
+ throw e;
+ }
+
+ YQL_LOG(DEBUG) << "UdfResolver needs shared library " << sharedLibrary;
+ if (!stubbedLibraries.emplace(sharedLibrary).second) {
+ // already tried, giving up
+ YQL_LOG(ERROR) << "Unable to load shared library " << sharedLibrary << " even after using dependency stub";
+ throw e;
+ }
+
+ YQL_LOG(DEBUG) << "Using dependency stub for shared library " << sharedLibrary;
+ PutSharedLibraryStub(sharedLibrary, filesBox);
+ ldLibraryPath = filesBox.GetDir();
+ });
+ }
+
+ void PutSharedLibraryStub(const TString& sharedLibrary, TFilesBox& filesBox) const {
+ YQL_ENSURE(UdfDependencyStubPath_);
+ filesBox.MakeLinkFrom(UdfDependencyStubPath_, sharedLibrary);
+ }
+
+ static bool ExtractMetadata(const TResolveResult& response, const THashMap<TString, TImport*>& importMap, const TVector<TFunction*>& functions, TExprContext& ctx) {
+ bool hasErrors = false;
YQL_ENSURE(response.UdfsSize() == functions.size(), "Number of returned udf signatures doesn't match original one");
for (size_t i = 0; i < response.ImportsSize(); ++i) {
@@ -331,7 +331,7 @@ private:
hasErrors = true;
} else if (import) {
import->Modules.ConstructInPlace();
- for (auto& module : importRes.GetModules()) {
+ for (auto& module : importRes.GetModules()) {
import->Modules->push_back(module);
}
}
@@ -371,12 +371,12 @@ private:
private:
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry_;
- NUdf::ITypeInfoHelper::TPtr TypeInfoHelper_;
+ NUdf::ITypeInfoHelper::TPtr TypeInfoHelper_;
TFileStoragePtr FileStorage_;
- const TString ResolverPath_;
- const TString UdfDependencyStubPath_;
- TList<TString> UserGroupArgs_;
- const TMap<TString, TString> Path2Md5_;
+ const TString ResolverPath_;
+ const TString UdfDependencyStubPath_;
+ TList<TString> UserGroupArgs_;
+ const TMap<TString, TString> Path2Md5_;
};
void LoadSystemModulePaths(
@@ -384,31 +384,31 @@ void LoadSystemModulePaths(
const TString& dir,
TUdfModulePathsMap* paths)
{
- const TList<TString> args = { TString("--list"), dir };
- RunResolver(resolverPath, args, nullptr, [&](const TString& output) {
- // output format is:
- // {{module_name}}\t{{module_path}}\n
-
- for (const auto& it : StringSplitter(output).Split('\n')) {
- TStringBuf moduleName, modulePath;
- const TStringBuf& line = it.Token();
+ const TList<TString> args = { TString("--list"), dir };
+ RunResolver(resolverPath, args, nullptr, [&](const TString& output) {
+ // output format is:
+ // {{module_name}}\t{{module_path}}\n
+
+ for (const auto& it : StringSplitter(output).Split('\n')) {
+ TStringBuf moduleName, modulePath;
+ const TStringBuf& line = it.Token();
if (!line.empty()) {
- line.Split('\t', moduleName, modulePath);
- paths->emplace(moduleName, modulePath);
- }
+ line.Split('\t', moduleName, modulePath);
+ paths->emplace(moduleName, modulePath);
+ }
}
- });
+ });
}
IUdfResolver::TPtr CreateOutProcUdfResolver(
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
const TFileStoragePtr& fileStorage,
- const TString& resolverPath,
- const TString& user,
- const TString& group,
+ const TString& resolverPath,
+ const TString& user,
+ const TString& group,
bool filterSyscalls,
- const TString& udfDependencyStubPath,
- const TMap<TString, TString>& path2md5) {
+ const TString& udfDependencyStubPath,
+ const TMap<TString, TString>& path2md5) {
return new TOutProcUdfResolver(functionRegistry, fileStorage, resolverPath, user, group, filterSyscalls, udfDependencyStubPath, path2md5);
}
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.h b/ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.h
index 5659a833e4..58a0d97e56 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.h
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_outproc_udf_resolver.h
@@ -5,7 +5,7 @@
#include <ydb/library/yql/minikql/mkql_function_registry.h>
#include <ydb/library/yql/providers/common/proto/udf_resolver.pb.h>
-#include <util/generic/map.h>
+#include <util/generic/map.h>
#include <util/generic/string.h>
namespace NYql {
@@ -19,12 +19,12 @@ void LoadSystemModulePaths(
IUdfResolver::TPtr CreateOutProcUdfResolver(
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
const TFileStoragePtr& fileStorage,
- const TString& resolverPath,
- const TString& user,
- const TString& group,
+ const TString& resolverPath,
+ const TString& user,
+ const TString& group,
bool filterSysCalls,
- const TString& udfDependencyStubPath,
- const TMap<TString, TString>& path2md5 = {});
+ const TString& udfDependencyStubPath,
+ const TMap<TString, TString>& path2md5 = {});
} // namespace NCommon
} // namespace NYql
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp b/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
index 3aac3487c0..c2138ca5d9 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
@@ -2,7 +2,7 @@
#include <ydb/library/yql/providers/common/mkql/yql_type_mkql.h>
#include <ydb/library/yql/core/yql_holding_file_storage.h>
-
+
#include <ydb/library/yql/minikql/mkql_node.h>
#include <ydb/library/yql/minikql/mkql_type_builder.h>
#include <ydb/library/yql/minikql/mkql_program_builder.h>
@@ -31,16 +31,16 @@ public:
, UseFakeMD5_(useFakeMD5)
{}
- TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const override {
+ TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const override {
with_lock(Lock_) {
- auto path = FunctionRegistry_->FindUdfPath(moduleName);
+ auto path = FunctionRegistry_->FindUdfPath(moduleName);
return path ? MakeMaybe<TFilePathWithMd5>(*path, UseFakeMD5_ ? *path : TString()) : Nothing();
}
}
- bool LoadMetadata(const TVector<TImport*>& imports,
- const TVector<TFunction*>& functions, TExprContext& ctx) const override {
-
+ bool LoadMetadata(const TVector<TImport*>& imports,
+ const TVector<TFunction*>& functions, TExprContext& ctx) const override {
+
with_lock(Lock_) {
bool hasErrors = false;
THashSet<TString> requiredModules;
@@ -56,7 +56,7 @@ public:
}
}
- THoldingFileStorage holdingFileStorage(FileStorage_);
+ THoldingFileStorage holdingFileStorage(FileStorage_);
auto newRegistry = FunctionRegistry_->Clone();
THashMap<TString, TImport*> path2import;
for (auto import: imports) {
@@ -78,10 +78,10 @@ public:
try {
if (FileStorage_) {
- auto link = holdingFileStorage.FreezeFile(*import->Block);
- auto path = link->GetPath().GetPath();
- newRegistry->LoadUdfs(path, {}, NUdf::IRegistrator::TFlags::TypesOnly);
- path2import[path] = import;
+ auto link = holdingFileStorage.FreezeFile(*import->Block);
+ auto path = link->GetPath().GetPath();
+ newRegistry->LoadUdfs(path, {}, NUdf::IRegistrator::TFlags::TypesOnly);
+ path2import[path] = import;
} else {
if (import->Block->Type != EUserDataType::PATH) {
ctx.AddError(TIssue(import->Pos, TStringBuilder() <<
@@ -110,16 +110,16 @@ public:
}
}
- hasErrors = !LoadFunctionsMetadata(functions, *newRegistry, TypeInfoHelper_, ctx) || hasErrors;
+ hasErrors = !LoadFunctionsMetadata(functions, *newRegistry, TypeInfoHelper_, ctx) || hasErrors;
return !hasErrors;
}
}
- TResolveResult LoadRichMetadata(const TVector<TImport>& imports) const override {
- Y_UNUSED(imports);
- ythrow yexception() << "LoadRichMetadata is not supported in SimpleUdfResolver";
- }
-
+ TResolveResult LoadRichMetadata(const TVector<TImport>& imports) const override {
+ Y_UNUSED(imports);
+ ythrow yexception() << "LoadRichMetadata is not supported in SimpleUdfResolver";
+ }
+
private:
mutable TAdaptiveLock Lock_;
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry_;
@@ -136,64 +136,64 @@ IUdfResolver::TPtr CreateSimpleUdfResolver(
return new TSimpleUdfResolver(functionRegistry, fileStorage, useFakeMD5);
}
-bool LoadFunctionsMetadata(const TVector<IUdfResolver::TFunction*>& functions,
- const NKikimr::NMiniKQL::IFunctionRegistry& functionRegistry,
- NUdf::ITypeInfoHelper::TPtr typeInfoHelper,
- TExprContext& ctx) {
-
- bool hasErrors = false;
- TScopedAlloc alloc;
- TTypeEnvironment env(alloc);
-
- for (auto udfPtr : functions) {
- auto& udf = *udfPtr;
- try {
- TProgramBuilder pgmBuilder(env, functionRegistry);
- TType* mkqlUserType = nullptr;
- if (udf.UserType) {
- TStringStream err;
+bool LoadFunctionsMetadata(const TVector<IUdfResolver::TFunction*>& functions,
+ const NKikimr::NMiniKQL::IFunctionRegistry& functionRegistry,
+ NUdf::ITypeInfoHelper::TPtr typeInfoHelper,
+ TExprContext& ctx) {
+
+ bool hasErrors = false;
+ TScopedAlloc alloc;
+ TTypeEnvironment env(alloc);
+
+ for (auto udfPtr : functions) {
+ auto& udf = *udfPtr;
+ try {
+ TProgramBuilder pgmBuilder(env, functionRegistry);
+ TType* mkqlUserType = nullptr;
+ if (udf.UserType) {
+ TStringStream err;
mkqlUserType = BuildType(*udf.UserType, pgmBuilder, err, true);
- if (!mkqlUserType) {
- ctx.AddError(TIssue(udf.Pos, TStringBuilder() << "Invalid user type for function: "
- << udf.Name << ", error: " << err.Str()));
- hasErrors = true;
- continue;
- }
- }
-
+ if (!mkqlUserType) {
+ ctx.AddError(TIssue(udf.Pos, TStringBuilder() << "Invalid user type for function: "
+ << udf.Name << ", error: " << err.Str()));
+ hasErrors = true;
+ continue;
+ }
+ }
+
auto secureParamsProvider = MakeSimpleSecureParamsProvider(udf.SecureParams);
- TFunctionTypeInfo funcInfo;
- auto status = functionRegistry.FindFunctionTypeInfo(env, typeInfoHelper, nullptr,
+ TFunctionTypeInfo funcInfo;
+ auto status = functionRegistry.FindFunctionTypeInfo(env, typeInfoHelper, nullptr,
udf.Name, mkqlUserType, udf.TypeConfig, NUdf::IUdfModule::TFlags::TypesOnly, {}, secureParamsProvider.get(), &funcInfo);
- if (!status.IsOk()) {
- ctx.AddError(TIssue(udf.Pos, TStringBuilder() << "Failed to find UDF function: " << udf.Name
- << ", reason: " << status.GetError()));
- hasErrors = true;
- continue;
- }
-
- udf.CallableType = ConvertMiniKQLType(udf.Pos, funcInfo.FunctionType, ctx);
- YQL_ENSURE(udf.CallableType);
- if (funcInfo.RunConfigType) {
- udf.RunConfigType = ConvertMiniKQLType(udf.Pos, const_cast<TType*>(funcInfo.RunConfigType), ctx);
- YQL_ENSURE(udf.RunConfigType);
- }
-
- if (funcInfo.UserType) {
- udf.NormalizedUserType = ConvertMiniKQLType(udf.Pos, const_cast<TType*>(funcInfo.UserType), ctx);
- YQL_ENSURE(udf.NormalizedUserType);
- }
- } catch (const std::exception& e) {
- ctx.AddError(TIssue(udf.Pos, TStringBuilder()
- << "Internal error was found when udf metadata is loading for function: " << udf.Name
- << ", reason: " << e.what()));
- hasErrors = true;
- }
- }
-
- return !hasErrors;
-}
-
+ if (!status.IsOk()) {
+ ctx.AddError(TIssue(udf.Pos, TStringBuilder() << "Failed to find UDF function: " << udf.Name
+ << ", reason: " << status.GetError()));
+ hasErrors = true;
+ continue;
+ }
+
+ udf.CallableType = ConvertMiniKQLType(udf.Pos, funcInfo.FunctionType, ctx);
+ YQL_ENSURE(udf.CallableType);
+ if (funcInfo.RunConfigType) {
+ udf.RunConfigType = ConvertMiniKQLType(udf.Pos, const_cast<TType*>(funcInfo.RunConfigType), ctx);
+ YQL_ENSURE(udf.RunConfigType);
+ }
+
+ if (funcInfo.UserType) {
+ udf.NormalizedUserType = ConvertMiniKQLType(udf.Pos, const_cast<TType*>(funcInfo.UserType), ctx);
+ YQL_ENSURE(udf.NormalizedUserType);
+ }
+ } catch (const std::exception& e) {
+ ctx.AddError(TIssue(udf.Pos, TStringBuilder()
+ << "Internal error was found when udf metadata is loading for function: " << udf.Name
+ << ", reason: " << e.what()));
+ hasErrors = true;
+ }
+ }
+
+ return !hasErrors;
+}
+
} // namespace NCommon
} // namespace NYql
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.h b/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.h
index 4aec038e43..df2c668ba1 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.h
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_simple_udf_resolver.h
@@ -2,7 +2,7 @@
#include <ydb/library/yql/core/yql_type_annotation.h>
#include <ydb/library/yql/core/file_storage/file_storage.h>
-
+
#include <ydb/library/yql/minikql/mkql_alloc.h>
#include <ydb/library/yql/minikql/mkql_function_registry.h>
@@ -13,10 +13,10 @@ IUdfResolver::TPtr CreateSimpleUdfResolver(
const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry,
const TFileStoragePtr& fileStorage = {}, bool useFakeMD5 = false);
-bool LoadFunctionsMetadata(const TVector<IUdfResolver::TFunction*>& functions,
- const NKikimr::NMiniKQL::IFunctionRegistry& functionRegistry,
- NUdf::ITypeInfoHelper::TPtr typeInfoHelper,
- TExprContext& ctx);
-
+bool LoadFunctionsMetadata(const TVector<IUdfResolver::TFunction*>& functions,
+ const NKikimr::NMiniKQL::IFunctionRegistry& functionRegistry,
+ NUdf::ITypeInfoHelper::TPtr typeInfoHelper,
+ TExprContext& ctx);
+
} // namespace NCommon
} // namespace NYql
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp b/ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp
index ac43a629b5..fe28fed28c 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.cpp
@@ -1,237 +1,237 @@
-#include "yql_udf_resolver_with_index.h"
-
+#include "yql_udf_resolver_with_index.h"
+
#include <ydb/library/yql/providers/common/schema/expr/yql_expr_schema.h>
#include <ydb/library/yql/core/yql_type_annotation.h>
-
+
#include <ydb/library/yql/minikql/mkql_node.h>
#include <ydb/library/yql/minikql/mkql_type_builder.h>
#include <ydb/library/yql/minikql/mkql_program_builder.h>
#include <ydb/library/yql/minikql/mkql_utils.h>
-
-#include <util/generic/hash_set.h>
-#include <util/generic/hash.h>
-#include <util/generic/map.h>
-#include <util/generic/set.h>
-#include <util/generic/string.h>
-#include <util/system/guard.h>
+
+#include <util/generic/hash_set.h>
+#include <util/generic/hash.h>
+#include <util/generic/map.h>
+#include <util/generic/set.h>
+#include <util/generic/string.h>
+#include <util/system/guard.h>
#include <util/system/mutex.h>
-
-namespace NYql {
-namespace NCommon {
-
-using namespace NKikimr;
-using namespace NKikimr::NMiniKQL;
-
-class TUdfResolverWithIndex : public IUdfResolver {
- class TResourceFile : public TThrRefBase {
- public:
- typedef TIntrusivePtr<TResourceFile> TPtr;
-
- public:
- TResourceFile(TString alias, const TVector<TString>& modules, TFileLinkPtr link)
- : Link_(std::move(link))
- {
- Import_.FileAlias = alias;
- Import_.Block = &Block_;
- Import_.Modules = MakeMaybe(modules);
-
- Block_.Type = EUserDataType::PATH;
- Block_.Data = Link_->GetPath();
- Block_.Usage.Set(EUserDataBlockUsage::Udf);
- }
-
- static TResourceFile::TPtr Create(const TString& packageName, const TSet<TString>& modules, TFileLinkPtr link) {
- // assume package name has no bad symbols for file name
- TString basename = link->GetPath().Basename();
- TString alias = basename.StartsWith("lib") ? basename : ("lib_" + packageName + "_udf.so");
- alias.to_lower();
- return MakeIntrusive<TResourceFile>(std::move(alias), TVector<TString>(modules.begin(), modules.end()), std::move(link));
- }
-
- public:
- TFileLinkPtr Link_;
- TUserDataBlock Block_;
- TImport Import_;
- };
-
-public:
- TUdfResolverWithIndex(TUdfIndex::TPtr udfIndex, IUdfResolver::TPtr fallback, TFileStoragePtr fileStorage)
- : UdfIndex_(udfIndex)
- , Fallback_(fallback)
- , FileStorage_(fileStorage)
- {
- Y_ENSURE(UdfIndex_);
- Y_ENSURE(FileStorage_);
- // fallback is required only to handle type aware functions and loading rich metadata
- Y_ENSURE(Fallback_);
- }
-
- TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const override {
- with_lock(Lock_) {
- TString moduleNameStr(moduleName);
- if (!UdfIndex_->ContainsModule(moduleNameStr)) {
- return Nothing();
- }
-
- auto file = DownloadFileWithModule(moduleNameStr);
- return MakeMaybe<TFilePathWithMd5>(file->Link_->GetPath(), file->Link_->GetMd5());
- }
- }
-
- bool LoadMetadata(const TVector<TImport*>& imports, const TVector<TFunction*>& functions, TExprContext& ctx) const override {
- with_lock(Lock_) {
- bool hasErrors = false;
- THashSet<TString> requiredModules;
- TVector<TFunction*> fallbackFunctions;
- TVector<TImport*> fallbackImports = imports;
- TSet<TImport*> additionalImports; // avoid duplicates
-
- for (auto udfPtr : functions) {
- TImport* additionalImport = nullptr;
- TFunction* fallbackFunction = nullptr;
- if (!LoadFunctionMetadata(*udfPtr, ctx, fallbackFunction, additionalImport)) {
- hasErrors = true;
- continue;
- }
-
- if (additionalImport) {
- additionalImports.insert(additionalImport);
- }
-
- if (fallbackFunction) {
- fallbackFunctions.push_back(fallbackFunction);
- }
- }
-
- fallbackImports.insert(fallbackImports.end(), additionalImports.begin(), additionalImports.end());
-
- return Fallback_->LoadMetadata(fallbackImports, fallbackFunctions, ctx) && !hasErrors;
- }
- }
-
- TResolveResult LoadRichMetadata(const TVector<TImport>& imports) const override {
- return Fallback_->LoadRichMetadata(imports);
- }
-
-private:
- bool LoadFunctionMetadata(TFunction& function, TExprContext& ctx, TFunction*& fallbackFunction, TImport*& additionalImport) const {
- TStringBuf moduleName, funcName;
+
+namespace NYql {
+namespace NCommon {
+
+using namespace NKikimr;
+using namespace NKikimr::NMiniKQL;
+
+class TUdfResolverWithIndex : public IUdfResolver {
+ class TResourceFile : public TThrRefBase {
+ public:
+ typedef TIntrusivePtr<TResourceFile> TPtr;
+
+ public:
+ TResourceFile(TString alias, const TVector<TString>& modules, TFileLinkPtr link)
+ : Link_(std::move(link))
+ {
+ Import_.FileAlias = alias;
+ Import_.Block = &Block_;
+ Import_.Modules = MakeMaybe(modules);
+
+ Block_.Type = EUserDataType::PATH;
+ Block_.Data = Link_->GetPath();
+ Block_.Usage.Set(EUserDataBlockUsage::Udf);
+ }
+
+ static TResourceFile::TPtr Create(const TString& packageName, const TSet<TString>& modules, TFileLinkPtr link) {
+ // assume package name has no bad symbols for file name
+ TString basename = link->GetPath().Basename();
+ TString alias = basename.StartsWith("lib") ? basename : ("lib_" + packageName + "_udf.so");
+ alias.to_lower();
+ return MakeIntrusive<TResourceFile>(std::move(alias), TVector<TString>(modules.begin(), modules.end()), std::move(link));
+ }
+
+ public:
+ TFileLinkPtr Link_;
+ TUserDataBlock Block_;
+ TImport Import_;
+ };
+
+public:
+ TUdfResolverWithIndex(TUdfIndex::TPtr udfIndex, IUdfResolver::TPtr fallback, TFileStoragePtr fileStorage)
+ : UdfIndex_(udfIndex)
+ , Fallback_(fallback)
+ , FileStorage_(fileStorage)
+ {
+ Y_ENSURE(UdfIndex_);
+ Y_ENSURE(FileStorage_);
+ // fallback is required only to handle type aware functions and loading rich metadata
+ Y_ENSURE(Fallback_);
+ }
+
+ TMaybe<TFilePathWithMd5> GetSystemModulePath(const TStringBuf& moduleName) const override {
+ with_lock(Lock_) {
+ TString moduleNameStr(moduleName);
+ if (!UdfIndex_->ContainsModule(moduleNameStr)) {
+ return Nothing();
+ }
+
+ auto file = DownloadFileWithModule(moduleNameStr);
+ return MakeMaybe<TFilePathWithMd5>(file->Link_->GetPath(), file->Link_->GetMd5());
+ }
+ }
+
+ bool LoadMetadata(const TVector<TImport*>& imports, const TVector<TFunction*>& functions, TExprContext& ctx) const override {
+ with_lock(Lock_) {
+ bool hasErrors = false;
+ THashSet<TString> requiredModules;
+ TVector<TFunction*> fallbackFunctions;
+ TVector<TImport*> fallbackImports = imports;
+ TSet<TImport*> additionalImports; // avoid duplicates
+
+ for (auto udfPtr : functions) {
+ TImport* additionalImport = nullptr;
+ TFunction* fallbackFunction = nullptr;
+ if (!LoadFunctionMetadata(*udfPtr, ctx, fallbackFunction, additionalImport)) {
+ hasErrors = true;
+ continue;
+ }
+
+ if (additionalImport) {
+ additionalImports.insert(additionalImport);
+ }
+
+ if (fallbackFunction) {
+ fallbackFunctions.push_back(fallbackFunction);
+ }
+ }
+
+ fallbackImports.insert(fallbackImports.end(), additionalImports.begin(), additionalImports.end());
+
+ return Fallback_->LoadMetadata(fallbackImports, fallbackFunctions, ctx) && !hasErrors;
+ }
+ }
+
+ TResolveResult LoadRichMetadata(const TVector<TImport>& imports) const override {
+ return Fallback_->LoadRichMetadata(imports);
+ }
+
+private:
+ bool LoadFunctionMetadata(TFunction& function, TExprContext& ctx, TFunction*& fallbackFunction, TImport*& additionalImport) const {
+ TStringBuf moduleName, funcName;
if (!SplitUdfName(function.Name, moduleName, funcName) || moduleName.empty() || funcName.empty()) {
- ctx.AddError(TIssue(function.Pos, TStringBuilder() << "Incorrect format of function name: " << function.Name));
- return false;
- }
-
- /*
- the order is really important:
- 1) check we have such module
- no-> fallback function
- 2) check we have such function
- no -> error
- 3) download resource file
- fail -> error
- 4) if polymorphic function -> fallback function with additional Import for downloaded file
- */
-
- TString moduleNameStr = TString(moduleName);
- if (!UdfIndex_->ContainsModule(moduleNameStr)) {
- fallbackFunction = &function;
- return true;
- }
-
- TFunctionInfo info;
- if (!UdfIndex_->FindFunction(moduleNameStr, function.Name, info)) {
- ctx.AddError(TIssue(function.Pos, TStringBuilder() << "Function not found: " << function.Name));
- return false;
- }
-
- TResourceFile::TPtr file = DownloadFileWithModule(moduleName, function.Pos, ctx);
- if (!file) {
- return false;
- }
-
- additionalImport = &file->Import_;
-
- if (info.IsTypeAwareness) {
- fallbackFunction = &function;
- return true;
- }
-
- if (!info.CallableType) {
- ctx.AddError(TIssue(function.Pos, TStringBuilder() << "CallableType for function " << function.Name << " is empty. Check UDF source code for errors."));
- return false;
- }
-
+ ctx.AddError(TIssue(function.Pos, TStringBuilder() << "Incorrect format of function name: " << function.Name));
+ return false;
+ }
+
+ /*
+ the order is really important:
+ 1) check we have such module
+ no-> fallback function
+ 2) check we have such function
+ no -> error
+ 3) download resource file
+ fail -> error
+ 4) if polymorphic function -> fallback function with additional Import for downloaded file
+ */
+
+ TString moduleNameStr = TString(moduleName);
+ if (!UdfIndex_->ContainsModule(moduleNameStr)) {
+ fallbackFunction = &function;
+ return true;
+ }
+
+ TFunctionInfo info;
+ if (!UdfIndex_->FindFunction(moduleNameStr, function.Name, info)) {
+ ctx.AddError(TIssue(function.Pos, TStringBuilder() << "Function not found: " << function.Name));
+ return false;
+ }
+
+ TResourceFile::TPtr file = DownloadFileWithModule(moduleName, function.Pos, ctx);
+ if (!file) {
+ return false;
+ }
+
+ additionalImport = &file->Import_;
+
+ if (info.IsTypeAwareness) {
+ fallbackFunction = &function;
+ return true;
+ }
+
+ if (!info.CallableType) {
+ ctx.AddError(TIssue(function.Pos, TStringBuilder() << "CallableType for function " << function.Name << " is empty. Check UDF source code for errors."));
+ return false;
+ }
+
function.CallableType = ParseTypeFromYson(TStringBuf{info.CallableType}, ctx, function.Pos);
- if (!function.CallableType) {
- ctx.AddError(TIssue(function.Pos, TStringBuilder() << "Failed to build callable type from YSON for function " << function.Name));
- return false;
- }
-
- if (info.RunConfigType) {
+ if (!function.CallableType) {
+ ctx.AddError(TIssue(function.Pos, TStringBuilder() << "Failed to build callable type from YSON for function " << function.Name));
+ return false;
+ }
+
+ if (info.RunConfigType) {
function.RunConfigType = ParseTypeFromYson(TStringBuf{info.RunConfigType}, ctx, function.Pos);
- if (!function.RunConfigType) {
- ctx.AddError(TIssue(function.Pos, TStringBuilder() << "Failed to build run config type from YSON for function " << function.Name));
- return false;
- }
- } else {
- function.RunConfigType = std::get<0>(ctx.SingletonTypeCache);
- }
-
- function.NormalizedUserType = std::get<0>(ctx.SingletonTypeCache);
- return true;
- }
-
- TResourceFile::TPtr DownloadFileWithModule(const TStringBuf& module, const TPosition& pos, TExprContext& ctx) const {
- try {
- return DownloadFileWithModule(module);
- } catch (const std::exception& e) {
- ctx.AddError(ExceptionToIssue(e, pos));
- }
-
- return nullptr;
- }
-
- TResourceFile::TPtr DownloadFileWithModule(const TStringBuf& module) const {
- TString moduleName(module);
-
- const auto it = DownloadedFiles_.find(module);
- if (it != DownloadedFiles_.end()) {
- return it->second;
- }
-
- auto resource = UdfIndex_->FindResourceByModule(moduleName);
- if (!resource) {
- ythrow yexception() << "No resource has been found for registered module " << moduleName;
- }
-
- // token is empty for urls for now
- // assumption: file path is frozen already, no need to put into file storage
- const TDownloadLink& downloadLink = resource->Link;
- TFileLinkPtr link = downloadLink.IsUrl ? FileStorage_->PutUrl(downloadLink.Path, {}) : CreateFakeFileLink(downloadLink.Path, downloadLink.Md5);
- TResourceFile::TPtr file = TResourceFile::Create(moduleName, resource->Modules, link);
- for (auto& d : resource->Modules) {
- auto p = DownloadedFiles_.emplace(d, file);
- if (!p.second) {
- // should not happen because UdfIndex handles conflicts
- ythrow yexception() << "file already downloaded for module " << moduleName << ", conflicting path " << downloadLink.Path << ", existing local file " << p.first->second->Link_->GetPath();
- }
- }
-
- return file;
- }
-
-private:
- mutable TMutex Lock_;
- const TUdfIndex::TPtr UdfIndex_;
- const IUdfResolver::TPtr Fallback_;
- const TFileStoragePtr FileStorage_;
- // module -> downloaded resource file
- mutable TMap<TString, TResourceFile::TPtr> DownloadedFiles_;
-};
-
-IUdfResolver::TPtr CreateUdfResolverWithIndex(TUdfIndex::TPtr udfIndex, IUdfResolver::TPtr fallback, TFileStoragePtr fileStorage) {
- return new TUdfResolverWithIndex(udfIndex, fallback, fileStorage);
-}
-
-} // namespace NCommon
-} // namespace NYql
+ if (!function.RunConfigType) {
+ ctx.AddError(TIssue(function.Pos, TStringBuilder() << "Failed to build run config type from YSON for function " << function.Name));
+ return false;
+ }
+ } else {
+ function.RunConfigType = std::get<0>(ctx.SingletonTypeCache);
+ }
+
+ function.NormalizedUserType = std::get<0>(ctx.SingletonTypeCache);
+ return true;
+ }
+
+ TResourceFile::TPtr DownloadFileWithModule(const TStringBuf& module, const TPosition& pos, TExprContext& ctx) const {
+ try {
+ return DownloadFileWithModule(module);
+ } catch (const std::exception& e) {
+ ctx.AddError(ExceptionToIssue(e, pos));
+ }
+
+ return nullptr;
+ }
+
+ TResourceFile::TPtr DownloadFileWithModule(const TStringBuf& module) const {
+ TString moduleName(module);
+
+ const auto it = DownloadedFiles_.find(module);
+ if (it != DownloadedFiles_.end()) {
+ return it->second;
+ }
+
+ auto resource = UdfIndex_->FindResourceByModule(moduleName);
+ if (!resource) {
+ ythrow yexception() << "No resource has been found for registered module " << moduleName;
+ }
+
+ // token is empty for urls for now
+ // assumption: file path is frozen already, no need to put into file storage
+ const TDownloadLink& downloadLink = resource->Link;
+ TFileLinkPtr link = downloadLink.IsUrl ? FileStorage_->PutUrl(downloadLink.Path, {}) : CreateFakeFileLink(downloadLink.Path, downloadLink.Md5);
+ TResourceFile::TPtr file = TResourceFile::Create(moduleName, resource->Modules, link);
+ for (auto& d : resource->Modules) {
+ auto p = DownloadedFiles_.emplace(d, file);
+ if (!p.second) {
+ // should not happen because UdfIndex handles conflicts
+ ythrow yexception() << "file already downloaded for module " << moduleName << ", conflicting path " << downloadLink.Path << ", existing local file " << p.first->second->Link_->GetPath();
+ }
+ }
+
+ return file;
+ }
+
+private:
+ mutable TMutex Lock_;
+ const TUdfIndex::TPtr UdfIndex_;
+ const IUdfResolver::TPtr Fallback_;
+ const TFileStoragePtr FileStorage_;
+ // module -> downloaded resource file
+ mutable TMap<TString, TResourceFile::TPtr> DownloadedFiles_;
+};
+
+IUdfResolver::TPtr CreateUdfResolverWithIndex(TUdfIndex::TPtr udfIndex, IUdfResolver::TPtr fallback, TFileStoragePtr fileStorage) {
+ return new TUdfResolverWithIndex(udfIndex, fallback, fileStorage);
+}
+
+} // namespace NCommon
+} // namespace NYql
diff --git a/ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.h b/ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.h
index 972d7534d4..67a5d87a15 100644
--- a/ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.h
+++ b/ydb/library/yql/providers/common/udf_resolve/yql_udf_resolver_with_index.h
@@ -1,12 +1,12 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/core/yql_udf_index.h>
#include <ydb/library/yql/core/file_storage/file_storage.h>
-
-namespace NYql {
-namespace NCommon {
-
-IUdfResolver::TPtr CreateUdfResolverWithIndex(TUdfIndex::TPtr udfIndex, IUdfResolver::TPtr fallback, TFileStoragePtr fileStorage);
-
-} // namespace NCommon
-} // namespace NYql
+
+namespace NYql {
+namespace NCommon {
+
+IUdfResolver::TPtr CreateUdfResolverWithIndex(TUdfIndex::TPtr udfIndex, IUdfResolver::TPtr fallback, TFileStoragePtr fileStorage);
+
+} // namespace NCommon
+} // namespace NYql
diff --git a/ydb/library/yql/providers/dq/actors/full_result_writer.cpp b/ydb/library/yql/providers/dq/actors/full_result_writer.cpp
index 927ac06043..ca826f2596 100644
--- a/ydb/library/yql/providers/dq/actors/full_result_writer.cpp
+++ b/ydb/library/yql/providers/dq/actors/full_result_writer.cpp
@@ -32,7 +32,7 @@ public:
const NActors::TActorId& aggregatorId)
: NActors::TActor<TFullResultWriterActor>(&TFullResultWriterActor::Handler)
, TraceID(traceId)
- , ResultBuilder(MakeHolder<TProtoBuilder>(resultType, TVector<TString>()))
+ , ResultBuilder(MakeHolder<TProtoBuilder>(resultType, TVector<TString>()))
, FullResultWriter(std::move(writer))
, AggregatorID(aggregatorId)
{
diff --git a/ydb/library/yql/providers/dq/actors/proto_builder.cpp b/ydb/library/yql/providers/dq/actors/proto_builder.cpp
index e4b16403c3..d6d5c3b125 100644
--- a/ydb/library/yql/providers/dq/actors/proto_builder.cpp
+++ b/ydb/library/yql/providers/dq/actors/proto_builder.cpp
@@ -30,13 +30,13 @@ TVector<ui32> BuildColumnOrder(const TVector<TString>& columns, NKikimr::NMiniKQ
for (ui32 i = 0; i < structType->GetMembersCount(); ++i) {
const auto columnName = TString(structType->GetMemberName(i));
column2id[columnName] = i;
- }
+ }
columnOrder.resize(columns.size());
int id = 0;
for (const auto& columnName : columns) {
columnOrder[id++] = column2id[columnName];
- }
+ }
return columnOrder;
}
@@ -50,10 +50,10 @@ NDqProto::EDataTransportVersion GetTransportVersion(const NYql::NDqProto::TData&
return NDqProto::EDataTransportVersion::DATA_TRANSPORT_ARROW_1_0;
default:
break;
- }
+ }
return NDqProto::EDataTransportVersion::DATA_TRANSPORT_VERSION_UNSPECIFIED;
}
-
+
} // unnamed
TProtoBuilder::TProtoBuilder(const TString& type, const TVector<TString>& columns)
diff --git a/ydb/library/yql/providers/dq/actors/proto_builder.h b/ydb/library/yql/providers/dq/actors/proto_builder.h
index 8ba05c8c3d..e7de7b0e70 100644
--- a/ydb/library/yql/providers/dq/actors/proto_builder.h
+++ b/ydb/library/yql/providers/dq/actors/proto_builder.h
@@ -17,12 +17,12 @@ namespace NYql::NDqs {
class TProtoBuilder {
public:
- TProtoBuilder(const TString& type, const TVector<TString>& columns);
+ TProtoBuilder(const TString& type, const TVector<TString>& columns);
~TProtoBuilder();
- bool CanBuildResultSet() const;
- Ydb::ResultSet BuildResultSet(const TVector<NYql::NDqProto::TData>& data);
- TString BuildYson(const TVector<NYql::NDqProto::TData>& data, ui64 maxBytesLimit = std::numeric_limits<ui64>::max());
+ bool CanBuildResultSet() const;
+ Ydb::ResultSet BuildResultSet(const TVector<NYql::NDqProto::TData>& data);
+ TString BuildYson(const TVector<NYql::NDqProto::TData>& data, ui64 maxBytesLimit = std::numeric_limits<ui64>::max());
bool WriteYsonData(const NYql::NDqProto::TData& data, const std::function<bool(const TString& rawYson)>& func);
bool WriteData(const NYql::NDqProto::TData& data, const std::function<bool(const NYql::NUdf::TUnboxedValuePod& value)>& func);
bool WriteData(const TVector<NYql::NDqProto::TData>& data, const std::function<bool(const NYql::NUdf::TUnboxedValuePod& value)>& func);
@@ -33,7 +33,7 @@ private:
NKikimr::NMiniKQL::TScopedAlloc Alloc;
NKikimr::NMiniKQL::TTypeEnvironment TypeEnv;
NKikimr::NMiniKQL::TType* ResultType;
- const TVector<ui32> ColumnOrder;
+ const TVector<ui32> ColumnOrder;
};
} // NYql::NDqs
diff --git a/ydb/library/yql/providers/dq/actors/result_aggregator.cpp b/ydb/library/yql/providers/dq/actors/result_aggregator.cpp
index 59ae95c3af..a1e97efe6a 100644
--- a/ydb/library/yql/providers/dq/actors/result_aggregator.cpp
+++ b/ydb/library/yql/providers/dq/actors/result_aggregator.cpp
@@ -68,7 +68,7 @@ public:
, Discard(discard)
, TraceId(traceId)
, Settings(settings)
- , ResultBuilder(MakeHolder<TProtoBuilder>(resultType, columns))
+ , ResultBuilder(MakeHolder<TProtoBuilder>(resultType, columns))
, ResultYsonOut(new THoldingStream<TCountingOutput>(MakeHolder<TStringOutput>(ResultYson)))
, ResultYsonWriter(MakeHolder<NYson::TYsonWriter>(ResultYsonOut.Get(), NYson::EYsonFormat::Binary, ::NYson::EYsonType::Node, true))
{
diff --git a/ydb/library/yql/providers/dq/actors/result_receiver.cpp b/ydb/library/yql/providers/dq/actors/result_receiver.cpp
index 7fdb73f257..b13337a4c7 100644
--- a/ydb/library/yql/providers/dq/actors/result_receiver.cpp
+++ b/ydb/library/yql/providers/dq/actors/result_receiver.cpp
@@ -47,7 +47,7 @@ public:
, SecureParams(std::move(secureParams))
, ResultBuilder(
resultType
- ? MakeHolder<TProtoBuilder>(resultType, columns)
+ ? MakeHolder<TProtoBuilder>(resultType, columns)
: nullptr)
, Discard(discard)
{
diff --git a/ydb/library/yql/providers/dq/actors/task_controller.cpp b/ydb/library/yql/providers/dq/actors/task_controller.cpp
index 238828e453..c881a99f59 100644
--- a/ydb/library/yql/providers/dq/actors/task_controller.cpp
+++ b/ydb/library/yql/providers/dq/actors/task_controller.cpp
@@ -74,7 +74,7 @@ public:
}
~TTaskController() override {
- SetTaskCountMetric(0);
+ SetTaskCountMetric(0);
}
private:
@@ -214,19 +214,19 @@ private:
*group->GetCounter(name) = v.Count;
if (ServiceCounters.PublicCounters && taskId == 0) {
TString publicCounterName;
- bool isDeriv = false;
- if (name == "MkqlMaxMemoryUsage") {
- publicCounterName = "query.memory_usage_bytes";
- } else if (name == "ComputeCpuTimeUs") {
- publicCounterName = "query.cpu_usage_us";
- isDeriv = true;
- } else if (name == "Bytes") {
+ bool isDeriv = false;
+ if (name == "MkqlMaxMemoryUsage") {
+ publicCounterName = "query.memory_usage_bytes";
+ } else if (name == "ComputeCpuTimeUs") {
+ publicCounterName = "query.cpu_usage_us";
+ isDeriv = true;
+ } else if (name == "Bytes") {
if (labels.find("Source") != labels.end()) publicCounterName = "query.input_bytes";
else if (labels.find("Sink") != labels.end()) publicCounterName = "query.output_bytes";
- isDeriv = true;
+ isDeriv = true;
}
if (publicCounterName) {
- *ServiceCounters.PublicCounters->GetNamedCounter("name", publicCounterName, isDeriv) = v.Count;
+ *ServiceCounters.PublicCounters->GetNamedCounter("name", publicCounterName, isDeriv) = v.Count;
}
}
}
@@ -387,18 +387,18 @@ private:
}
}
- void SetTaskCountMetric(ui64 count) {
- if (!ServiceCounters.Counters) {
- return;
- }
- *ServiceCounters.Counters->GetCounter("TaskCount") = count;
-
- if (!ServiceCounters.PublicCounters) {
- return;
- }
- *ServiceCounters.PublicCounters->GetNamedCounter("name", "query.running_tasks") = count;
- }
-
+ void SetTaskCountMetric(ui64 count) {
+ if (!ServiceCounters.Counters) {
+ return;
+ }
+ *ServiceCounters.Counters->GetCounter("TaskCount") = count;
+
+ if (!ServiceCounters.PublicCounters) {
+ return;
+ }
+ *ServiceCounters.PublicCounters->GetNamedCounter("name", "query.running_tasks") = count;
+ }
+
void OnReadyState(TEvReadyState::TPtr& ev) {
YQL_LOG_CTX_SCOPE(TraceId);
@@ -408,7 +408,7 @@ private:
const auto& actorIds = ev->Get()->Record.GetActorId();
Y_VERIFY(tasks.size() == actorIds.size());
- SetTaskCountMetric(tasks.size());
+ SetTaskCountMetric(tasks.size());
for (int i = 0; i < static_cast<int>(tasks.size()); ++i) {
auto actorId = ActorIdFromProto(actorIds[i]);
diff --git a/ydb/library/yql/providers/dq/api/protos/task_command_executor.proto b/ydb/library/yql/providers/dq/api/protos/task_command_executor.proto
index 6e3d08e595..c9592ea810 100644
--- a/ydb/library/yql/providers/dq/api/protos/task_command_executor.proto
+++ b/ydb/library/yql/providers/dq/api/protos/task_command_executor.proto
@@ -29,13 +29,13 @@ message TCommandHeader {
GET_STATS = 14;
GET_STATS_INPUT = 15;
GET_STATS_OUTPUT = 16;
- GET_STATS_SOURCE = 17;
-
- GET_FREE_SPACE_SOURCE = 18;
- GET_STORED_BYTES_SOURCE = 19;
- PUSH_SOURCE = 20;
- GET_SOURCE_TYPE = 21;
- FINISH_SOURCE = 22;
+ GET_STATS_SOURCE = 17;
+
+ GET_FREE_SPACE_SOURCE = 18;
+ GET_STORED_BYTES_SOURCE = 19;
+ PUSH_SOURCE = 20;
+ GET_SOURCE_TYPE = 21;
+ FINISH_SOURCE = 22;
// Sink
SINK_POP = 23; // TSinkPopRequest -> TSinkPopResponse
@@ -91,7 +91,7 @@ message TPrepareResponse {
repeated TMetric Metric = 2;
}
-message TGetTypeResponse {
+message TGetTypeResponse {
bytes Result = 1;
}
@@ -118,11 +118,11 @@ message TGetStatsOutputResponse {
NDqProto.TDqOutputChannelStats Stats = 2;
}
-message TGetStatsSourceResponse {
+message TGetStatsSourceResponse {
reserved 1; // NKqpProto.TKqpStatsTask.TSourceStats Stats = 1;
NDqProto.TDqSourceStats Stats = 2;
-}
-
+}
+
message TSinkStatsResponse {
NDqProto.TDqSinkStats Stats = 1;
}
@@ -130,13 +130,13 @@ message TSinkStatsResponse {
message TPrepareRequest {
NYql.NDqProto.TDqTask Task = 1;
}
-
-message TSourcePushRequest {
- TData Data = 1;
+
+message TSourcePushRequest {
+ TData Data = 1;
int64 Space = 2;
repeated bytes String = 3;
int32 Chunks = 4;
-}
+}
message TSourcePushChunk {
int64 Parts = 1;
diff --git a/ydb/library/yql/providers/dq/counters/counters.h b/ydb/library/yql/providers/dq/counters/counters.h
index 4a457d24fc..8f3d2ac200 100644
--- a/ydb/library/yql/providers/dq/counters/counters.h
+++ b/ydb/library/yql/providers/dq/counters/counters.h
@@ -224,20 +224,20 @@ struct TCounters {
NDq::TDqSourceStats& oldStats,
ui64 taskId, ui64 inputIndex)
{
- std::map<TString, TString> labels = {
- {"Task", ToString(taskId)},
- {"SourceIndex", ToString(inputIndex)}
- };
-
- ADD_COUNTER(Chunks);
- ADD_COUNTER(Bytes);
- ADD_COUNTER(RowsIn);
- ADD_COUNTER(RowsOut);
- ADD_COUNTER(RowsInMemory);
- ADD_COUNTER(MaxMemoryUsage);
- ADD_COUNTER(InputIndex);
- }
-
+ std::map<TString, TString> labels = {
+ {"Task", ToString(taskId)},
+ {"SourceIndex", ToString(inputIndex)}
+ };
+
+ ADD_COUNTER(Chunks);
+ ADD_COUNTER(Bytes);
+ ADD_COUNTER(RowsIn);
+ ADD_COUNTER(RowsOut);
+ ADD_COUNTER(RowsInMemory);
+ ADD_COUNTER(MaxMemoryUsage);
+ ADD_COUNTER(InputIndex);
+ }
+
void AddOutputChannelStats(
const NDq::TDqOutputChannelStats& currentStats,
NDq::TDqOutputChannelStats& oldStats,
diff --git a/ydb/library/yql/providers/dq/local_gateway/yql_dq_gateway_local.cpp b/ydb/library/yql/providers/dq/local_gateway/yql_dq_gateway_local.cpp
index 1a8d3172e4..63d870a32d 100644
--- a/ydb/library/yql/providers/dq/local_gateway/yql_dq_gateway_local.cpp
+++ b/ydb/library/yql/providers/dq/local_gateway/yql_dq_gateway_local.cpp
@@ -24,24 +24,24 @@ namespace NYql {
using namespace NActors;
using NDqs::MakeWorkerManagerActorID;
-namespace {
+namespace {
// TODO: Use the only driver for both sources.
NDq::IDqSourceActorFactory::TPtr CreateSourceActorFactory(const NYdb::TDriver& driver, IHTTPGateway::TPtr httpGateway) {
- auto factory = MakeIntrusive<NYql::NDq::TDqSourceFactory>();
+ auto factory = MakeIntrusive<NYql::NDq::TDqSourceFactory>();
RegisterDqPqReadActorFactory(*factory, driver, nullptr);
- RegisterYdbReadActorFactory(*factory, driver, nullptr);
+ RegisterYdbReadActorFactory(*factory, driver, nullptr);
RegisterS3ReadActorFactory(*factory, nullptr, httpGateway);
RegisterClickHouseReadActorFactory(*factory, nullptr, httpGateway);
- return factory;
- }
+ return factory;
+ }
NDq::IDqSinkActorFactory::TPtr CreateSinkActorFactory(const NYdb::TDriver& driver) {
auto factory = MakeIntrusive<NYql::NDq::TDqSinkFactory>();
RegisterDqPqWriteActorFactory(*factory, driver, nullptr);
return factory;
}
-}
-
+}
+
class TLocalServiceHolder {
public:
TLocalServiceHolder(NYdb::TDriver driver, IHTTPGateway::TPtr httpGateway, const NKikimr::NMiniKQL::IFunctionRegistry* functionRegistry, NKikimr::NMiniKQL::TComputationNodeFactory compFactory,
diff --git a/ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp b/ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp
index 8759f44221..1ef883e58c 100644
--- a/ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp
+++ b/ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.cpp
@@ -172,9 +172,9 @@ public:
}
auto serializedResultType = GetSerializedResultType(lambda);
- NYql::NDqs::TProtoBuilder protoBuilder(serializedResultType, columns);
+ NYql::NDqs::TProtoBuilder protoBuilder(serializedResultType, columns);
- result.Data = protoBuilder.BuildYson(rows);
+ result.Data = protoBuilder.BuildYson(rows);
AddCounter("LocalRun", TInstant::Now() - t);
diff --git a/ydb/library/yql/providers/dq/runtime/task_command_executor.cpp b/ydb/library/yql/providers/dq/runtime/task_command_executor.cpp
index 9b41920b17..3fd60a2275 100644
--- a/ydb/library/yql/providers/dq/runtime/task_command_executor.cpp
+++ b/ydb/library/yql/providers/dq/runtime/task_command_executor.cpp
@@ -38,7 +38,7 @@ namespace NTaskRunnerProxy {
// static const int CurrentProtocolVersion = 1;
// static const int CurrentProtocolVersion = 2; // GetFreeSpace
-// static const int CurrentProtocolVersion = 3; // Calls for ComputeActor
+// static const int CurrentProtocolVersion = 3; // Calls for ComputeActor
// static const int CurrentProtocolVersion = 4; // Calls for Sources
static const int CurrentProtocolVersion = 5; // Calls for Sinks
@@ -55,17 +55,17 @@ void ToProto(T* s1, const NDq::TDqInputChannelStats* ss)
}
template<typename T>
-void ToProto(T* s1, const NDq::TDqSourceStats* ss)
-{
- s1->SetChunks(ss->Chunks);
- s1->SetBytes(ss->Bytes);
- s1->SetRowsIn(ss->RowsIn);
- s1->SetRowsOut(ss->RowsOut);
- s1->SetMaxMemoryUsage(ss->MaxMemoryUsage);
- s1->SetInputIndex(ss->InputIndex);
-}
-
-template<typename T>
+void ToProto(T* s1, const NDq::TDqSourceStats* ss)
+{
+ s1->SetChunks(ss->Chunks);
+ s1->SetBytes(ss->Bytes);
+ s1->SetRowsIn(ss->RowsIn);
+ s1->SetRowsOut(ss->RowsOut);
+ s1->SetMaxMemoryUsage(ss->MaxMemoryUsage);
+ s1->SetInputIndex(ss->InputIndex);
+}
+
+template<typename T>
void ToProto(T* s1, const NDq::TDqOutputChannelStats* ss)
{
s1->SetChannelId(ss->ChannelId);
@@ -173,16 +173,16 @@ public:
Runner->GetTaskId(), channelId);
}
- void UpdateSourceStats(ui64 inputIndex)
- {
- if (!Runner) {
- return;
- }
- auto s = Runner->GetStats();
- auto maybeSourceStats = s->Sources.find(inputIndex);
+ void UpdateSourceStats(ui64 inputIndex)
+ {
+ if (!Runner) {
+ return;
+ }
+ auto s = Runner->GetStats();
+ auto maybeSourceStats = s->Sources.find(inputIndex);
if (maybeSourceStats == s->Sources.end() || !maybeSourceStats->second) {
- return;
- }
+ return;
+ }
auto maybeSourceOldStats = CurrentSourcesStats.find(inputIndex);
if (maybeSourceOldStats == CurrentSourcesStats.end()) {
maybeSourceOldStats = CurrentSourcesStats.emplace_hint(
@@ -192,8 +192,8 @@ public:
*maybeSourceStats->second,
maybeSourceOldStats->second,
Runner->GetTaskId(), inputIndex);
- }
-
+ }
+
template<typename T>
void UpdateStats(T& t) {
UpdateStats();
@@ -299,14 +299,14 @@ public:
UpdateInputChannelStats(channelId);
break;
}
- case NDqProto::TCommandHeader::PUSH_SOURCE: {
- Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
+ case NDqProto::TCommandHeader::PUSH_SOURCE: {
+ Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
Y_ENSURE(taskId == Runner->GetTaskId());
- auto source = Runner->GetSource(channelId);
-
- NDqProto::TSourcePushRequest request;
- request.Load(&input);
-
+ auto source = Runner->GetSource(channelId);
+
+ NDqProto::TSourcePushRequest request;
+ request.Load(&input);
+
auto guard = Runner->BindAllocator(0); // Explicitly reset memory limit
auto transportVersion = NDqProto::EDataTransportVersion::DATA_TRANSPORT_VERSION_UNSPECIFIED;
switch (request.GetData().GetTransportVersion()) {
@@ -326,8 +326,8 @@ public:
transportVersion = NDqProto::EDataTransportVersion::DATA_TRANSPORT_VERSION_UNSPECIFIED;
}
NDq::TDqDataSerializer dataSerializer(Runner->GetTypeEnv(), Runner->GetHolderFactory(), transportVersion);
- NKikimr::NMiniKQL::TUnboxedValueVector buffer;
- buffer.reserve(request.GetData().GetRows());
+ NKikimr::NMiniKQL::TUnboxedValueVector buffer;
+ buffer.reserve(request.GetData().GetRows());
if (request.GetString().empty() && request.GetChunks() == 0) {
dataSerializer.Deserialize(request.GetData(), source->GetInputType(), buffer);
} else if (!request.GetString().empty()) {
@@ -356,11 +356,11 @@ public:
}
}
}
-
- source->Push(std::move(buffer), request.GetSpace());
+
+ source->Push(std::move(buffer), request.GetSpace());
UpdateSourceStats(channelId);
- break;
- }
+ break;
+ }
case NDqProto::TCommandHeader::FINISH: {
Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
Y_ENSURE(taskId == Runner->GetTaskId());
@@ -375,13 +375,13 @@ public:
UpdateOutputChannelStats(channelId);
break;
}
- case NDqProto::TCommandHeader::FINISH_SOURCE: {
- Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
+ case NDqProto::TCommandHeader::FINISH_SOURCE: {
+ Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
Y_ENSURE(taskId == Runner->GetTaskId());
- Runner->GetSource(channelId)->Finish();
- UpdateSourceStats(channelId);
- break;
- }
+ Runner->GetSource(channelId)->Finish();
+ UpdateSourceStats(channelId);
+ break;
+ }
case NDqProto::TCommandHeader::DROP_OUTPUT: {
Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
Y_ENSURE(taskId == Runner->GetTaskId());
@@ -409,16 +409,16 @@ public:
response.Save(&output);
break;
}
- case NDqProto::TCommandHeader::GET_STORED_BYTES_SOURCE: {
- Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
+ case NDqProto::TCommandHeader::GET_STORED_BYTES_SOURCE: {
+ Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
Y_ENSURE(taskId == Runner->GetTaskId());
- auto res = Runner->GetSource(channelId)->GetStoredBytes();
-
- NDqProto::TGetStoredBytesResponse response;
- response.SetResult(res);
- response.Save(&output);
- break;
- }
+ auto res = Runner->GetSource(channelId)->GetStoredBytes();
+
+ NDqProto::TGetStoredBytesResponse response;
+ response.SetResult(res);
+ response.Save(&output);
+ break;
+ }
case NDqProto::TCommandHeader::POP: {
Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
auto guard = Runner->BindAllocator(0); // Explicitly reset memory limit
@@ -488,26 +488,26 @@ public:
auto channel = Runner->GetInputChannel(channelId);
auto inputType = channel->GetInputType();
- NDqProto::TGetTypeResponse response;
+ NDqProto::TGetTypeResponse response;
response.SetResult(NKikimr::NMiniKQL::SerializeNode(inputType, Runner->GetTypeEnv()));
response.Save(&output);
break;
}
- case NDqProto::TCommandHeader::GET_SOURCE_TYPE: {
- Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
+ case NDqProto::TCommandHeader::GET_SOURCE_TYPE: {
+ Y_ENSURE(header.GetVersion() <= CurrentProtocolVersion);
auto guard = Runner->BindAllocator(0); // Explicitly reset memory limit
-
+
Y_ENSURE(taskId == Runner->GetTaskId());
- auto source = Runner->GetSource(channelId);
- auto inputType = source->GetInputType();
-
- NDqProto::TGetTypeResponse response;
- response.SetResult(NKikimr::NMiniKQL::SerializeNode(inputType, Runner->GetTypeEnv()));
- response.Save(&output);
-
- break;
- }
+ auto source = Runner->GetSource(channelId);
+ auto inputType = source->GetInputType();
+
+ NDqProto::TGetTypeResponse response;
+ response.SetResult(NKikimr::NMiniKQL::SerializeNode(inputType, Runner->GetTypeEnv()));
+ response.Save(&output);
+
+ break;
+ }
case NDqProto::TCommandHeader::GET_FREE_SPACE: {
Y_ENSURE(header.GetVersion() >= 2);
@@ -519,17 +519,17 @@ public:
break;
}
- case NDqProto::TCommandHeader::GET_FREE_SPACE_SOURCE: {
+ case NDqProto::TCommandHeader::GET_FREE_SPACE_SOURCE: {
Y_ENSURE(header.GetVersion() >= 4);
-
+
Y_ENSURE(taskId == Runner->GetTaskId());
- auto source = Runner->GetSource(channelId);
- NDqProto::TGetFreeSpaceResponse response;
- response.SetFreeSpace(source->GetFreeSpace());
- response.Save(&output);
-
- break;
- }
+ auto source = Runner->GetSource(channelId);
+ NDqProto::TGetFreeSpaceResponse response;
+ response.SetFreeSpace(source->GetFreeSpace());
+ response.Save(&output);
+
+ break;
+ }
case NDqProto::TCommandHeader::GET_STATS: {
Y_ENSURE(header.GetVersion() >= 3);
Y_ENSURE(taskId == Runner->GetTaskId());
@@ -568,11 +568,11 @@ public:
for (const auto& [id, ss] : stats->InputChannels) {
ToProto(s->AddInputChannels(), ss);
}
-
- for (const auto& [id, ss] : stats->Sources) {
- ToProto(s->AddSources(), ss);
- }
-
+
+ for (const auto& [id, ss] : stats->Sources) {
+ ToProto(s->AddSources(), ss);
+ }
+
response.Save(&output);
break;
@@ -586,15 +586,15 @@ public:
response.Save(&output);
break;
}
- case NDqProto::TCommandHeader::GET_STATS_SOURCE: {
+ case NDqProto::TCommandHeader::GET_STATS_SOURCE: {
Y_ENSURE(header.GetVersion() >= 4);
Y_ENSURE(taskId == Runner->GetTaskId());
- auto ss = Runner->GetSource(channelId)->GetStats();
- NDqProto::TGetStatsSourceResponse response;
- ToProto(response.MutableStats(), ss);
- response.Save(&output);
- break;
- }
+ auto ss = Runner->GetSource(channelId)->GetStats();
+ NDqProto::TGetStatsSourceResponse response;
+ ToProto(response.MutableStats(), ss);
+ response.Save(&output);
+ break;
+ }
case NDqProto::TCommandHeader::GET_STATS_OUTPUT: {
Y_ENSURE(header.GetVersion() >= 3);
Y_ENSURE(taskId == Runner->GetTaskId());
diff --git a/ydb/library/yql/providers/dq/task_runner/tasks_runner_local.cpp b/ydb/library/yql/providers/dq/task_runner/tasks_runner_local.cpp
index ab8769f44e..c42ee58149 100644
--- a/ydb/library/yql/providers/dq/task_runner/tasks_runner_local.cpp
+++ b/ydb/library/yql/providers/dq/task_runner/tasks_runner_local.cpp
@@ -175,10 +175,10 @@ public:
return Runner->GetTypeEnv();
}
- const NKikimr::NMiniKQL::THolderFactory& GetHolderFactory() const override {
- return Runner->GetHolderFactory();
- }
-
+ const NKikimr::NMiniKQL::THolderFactory& GetHolderFactory() const override {
+ return Runner->GetHolderFactory();
+ }
+
TGuard<NKikimr::NMiniKQL::TScopedAlloc> BindAllocator(TMaybe<ui64> memoryLimit) override {
return Runner->BindAllocator(memoryLimit);
}
diff --git a/ydb/library/yql/providers/dq/task_runner/tasks_runner_pipe.cpp b/ydb/library/yql/providers/dq/task_runner/tasks_runner_pipe.cpp
index cdcbd32ef5..cd59ce0092 100644
--- a/ydb/library/yql/providers/dq/task_runner/tasks_runner_pipe.cpp
+++ b/ydb/library/yql/providers/dq/task_runner/tasks_runner_pipe.cpp
@@ -73,19 +73,19 @@ void FromProto(TDqInputChannelStats* s, const T& f)
}
template<typename T>
-void FromProto(TDqSourceStats* s, const T& f)
-{
- s->InputIndex = f.GetInputIndex();
- s->Chunks = f.GetChunks();
- s->Bytes = f.GetBytes();
- s->RowsIn = f.GetRowsIn();
- s->RowsOut = f.GetRowsOut();
- s->MaxMemoryUsage = f.GetMaxMemoryUsage();
+void FromProto(TDqSourceStats* s, const T& f)
+{
+ s->InputIndex = f.GetInputIndex();
+ s->Chunks = f.GetChunks();
+ s->Bytes = f.GetBytes();
+ s->RowsIn = f.GetRowsIn();
+ s->RowsOut = f.GetRowsOut();
+ s->MaxMemoryUsage = f.GetMaxMemoryUsage();
//s->StartTs = TInstant::MilliSeconds(f.GetStartTs());
//s->FinishTs = TInstant::MilliSeconds(f.GetFinishTs());
-}
-
-template<typename T>
+}
+
+template<typename T>
void FromProto(TDqSinkStats* s, const T& f)
{
s->Chunks = f.GetChunks();
@@ -519,11 +519,11 @@ public:
class TInputChannel : public IInputChannel {
public:
TInputChannel(const ITaskRunner::TPtr& taskRunner, ui64 taskId, ui64 channelId, IInputStream& input, IOutputStream& output)
- : TaskId(taskId)
+ : TaskId(taskId)
, ChannelId(channelId)
, Input(input)
, Output(output)
- , ProtocolVersion(taskRunner->GetProtocolVersion())
+ , ProtocolVersion(taskRunner->GetProtocolVersion())
{ }
i64 GetFreeSpace() override {
@@ -693,47 +693,47 @@ private:
};
class TDqSource: public IStringSource {
-public:
- TDqSource(ui64 taskId, ui64 inputIndex, IPipeTaskRunner* taskRunner)
- : TaskId(taskId)
- , InputIndex(inputIndex)
- , Stats(inputIndex)
- , TaskRunner(taskRunner)
- , Input(TaskRunner->GetInput())
- , Output(TaskRunner->GetOutput())
- { }
-
- i64 GetFreeSpace() const override {
- NDqProto::TCommandHeader header;
- header.SetVersion(4);
- header.SetCommand(NDqProto::TCommandHeader::GET_FREE_SPACE_SOURCE);
- header.SetTaskId(TaskId);
- header.SetChannelId(InputIndex);
- header.Save(&Output);
-
- NDqProto::TGetFreeSpaceResponse response;
- response.Load(&Input);
- return response.GetFreeSpace();
- }
-
- ui64 GetStoredBytes() const override {
- NDqProto::TCommandHeader header;
- header.SetVersion(4);
- header.SetCommand(NDqProto::TCommandHeader::GET_STORED_BYTES_SOURCE);
- header.SetTaskId(TaskId);
- header.SetChannelId(InputIndex);
- header.Save(&Output);
-
- NDqProto::TGetStoredBytesResponse response;
- response.Load(&Input);
-
- return response.GetResult();
- }
-
- bool Empty() const override {
- ythrow yexception() << "unimplemented";
- }
-
+public:
+ TDqSource(ui64 taskId, ui64 inputIndex, IPipeTaskRunner* taskRunner)
+ : TaskId(taskId)
+ , InputIndex(inputIndex)
+ , Stats(inputIndex)
+ , TaskRunner(taskRunner)
+ , Input(TaskRunner->GetInput())
+ , Output(TaskRunner->GetOutput())
+ { }
+
+ i64 GetFreeSpace() const override {
+ NDqProto::TCommandHeader header;
+ header.SetVersion(4);
+ header.SetCommand(NDqProto::TCommandHeader::GET_FREE_SPACE_SOURCE);
+ header.SetTaskId(TaskId);
+ header.SetChannelId(InputIndex);
+ header.Save(&Output);
+
+ NDqProto::TGetFreeSpaceResponse response;
+ response.Load(&Input);
+ return response.GetFreeSpace();
+ }
+
+ ui64 GetStoredBytes() const override {
+ NDqProto::TCommandHeader header;
+ header.SetVersion(4);
+ header.SetCommand(NDqProto::TCommandHeader::GET_STORED_BYTES_SOURCE);
+ header.SetTaskId(TaskId);
+ header.SetChannelId(InputIndex);
+ header.Save(&Output);
+
+ NDqProto::TGetStoredBytesResponse response;
+ response.Load(&Input);
+
+ return response.GetResult();
+ }
+
+ bool Empty() const override {
+ ythrow yexception() << "unimplemented";
+ }
+
void PushString(TVector<TString>&& batch, i64 space) override {
if (space > static_cast<i64>(256_MB)) {
throw yexception() << "Too big batch " << space;
@@ -769,83 +769,83 @@ public:
}
}
- void Push(NKikimr::NMiniKQL::TUnboxedValueVector&& batch, i64 space) override {
- auto inputType = GetInputType();
- NDqProto::TSourcePushRequest data;
+ void Push(NKikimr::NMiniKQL::TUnboxedValueVector&& batch, i64 space) override {
+ auto inputType = GetInputType();
+ NDqProto::TSourcePushRequest data;
TDqDataSerializer dataSerializer(TaskRunner->GetTypeEnv(), TaskRunner->GetHolderFactory(), NDqProto::DATA_TRANSPORT_UV_PICKLE_1_0);
- *data.MutableData() = dataSerializer.Serialize(batch, static_cast<NKikimr::NMiniKQL::TType*>(inputType));
- data.SetSpace(space);
-
- NDqProto::TCommandHeader header;
- header.SetVersion(4);
- header.SetCommand(NDqProto::TCommandHeader::PUSH_SOURCE);
- header.SetTaskId(TaskId);
- header.SetChannelId(InputIndex);
- header.Save(&Output);
- data.Save(&Output);
- }
-
- [[nodiscard]]
- bool Pop(NKikimr::NMiniKQL::TUnboxedValueVector& batch) override {
- Y_UNUSED(batch);
- ythrow yexception() << "unimplemented";
- }
-
- void Finish() override {
- NDqProto::TCommandHeader header;
- header.SetVersion(4);
- header.SetCommand(NDqProto::TCommandHeader::FINISH_SOURCE);
- header.SetTaskId(TaskId);
- header.SetChannelId(InputIndex);
- header.Save(&Output);
- }
-
- bool IsFinished() const override {
- ythrow yexception() << "unimplemented";
- }
-
- ui64 GetInputIndex() const override {
- return InputIndex;
- }
-
+ *data.MutableData() = dataSerializer.Serialize(batch, static_cast<NKikimr::NMiniKQL::TType*>(inputType));
+ data.SetSpace(space);
+
+ NDqProto::TCommandHeader header;
+ header.SetVersion(4);
+ header.SetCommand(NDqProto::TCommandHeader::PUSH_SOURCE);
+ header.SetTaskId(TaskId);
+ header.SetChannelId(InputIndex);
+ header.Save(&Output);
+ data.Save(&Output);
+ }
+
+ [[nodiscard]]
+ bool Pop(NKikimr::NMiniKQL::TUnboxedValueVector& batch) override {
+ Y_UNUSED(batch);
+ ythrow yexception() << "unimplemented";
+ }
+
+ void Finish() override {
+ NDqProto::TCommandHeader header;
+ header.SetVersion(4);
+ header.SetCommand(NDqProto::TCommandHeader::FINISH_SOURCE);
+ header.SetTaskId(TaskId);
+ header.SetChannelId(InputIndex);
+ header.Save(&Output);
+ }
+
+ bool IsFinished() const override {
+ ythrow yexception() << "unimplemented";
+ }
+
+ ui64 GetInputIndex() const override {
+ return InputIndex;
+ }
+
const TDqSourceStats* GetStats() const override {
- try {
- NDqProto::TCommandHeader header;
- header.SetVersion(4);
- header.SetCommand(NDqProto::TCommandHeader::GET_STATS_SOURCE);
- header.SetTaskId(TaskId);
- header.SetChannelId(InputIndex);
- header.Save(&Output);
-
- NDqProto::TGetStatsSourceResponse response;
- response.Load(&Input);
-
- FromProto(&Stats, response.GetStats());
- return &Stats;
- } catch (...) {
- TaskRunner->RaiseException();
- }
- }
-
- NKikimr::NMiniKQL::TType* GetInputType() const override {
- if (InputType) {
- return InputType;
- }
-
- NDqProto::TCommandHeader header;
- header.SetVersion(4);
- header.SetCommand(NDqProto::TCommandHeader::GET_SOURCE_TYPE);
- header.SetTaskId(TaskId);
- header.SetChannelId(InputIndex);
- header.Save(&Output);
-
- NDqProto::TGetTypeResponse response;
- response.Load(&Input);
-
- InputType = static_cast<NKikimr::NMiniKQL::TType*>(NKikimr::NMiniKQL::DeserializeNode(response.GetResult(), TaskRunner->GetTypeEnv()));
- return InputType;
- }
-
+ try {
+ NDqProto::TCommandHeader header;
+ header.SetVersion(4);
+ header.SetCommand(NDqProto::TCommandHeader::GET_STATS_SOURCE);
+ header.SetTaskId(TaskId);
+ header.SetChannelId(InputIndex);
+ header.Save(&Output);
+
+ NDqProto::TGetStatsSourceResponse response;
+ response.Load(&Input);
+
+ FromProto(&Stats, response.GetStats());
+ return &Stats;
+ } catch (...) {
+ TaskRunner->RaiseException();
+ }
+ }
+
+ NKikimr::NMiniKQL::TType* GetInputType() const override {
+ if (InputType) {
+ return InputType;
+ }
+
+ NDqProto::TCommandHeader header;
+ header.SetVersion(4);
+ header.SetCommand(NDqProto::TCommandHeader::GET_SOURCE_TYPE);
+ header.SetTaskId(TaskId);
+ header.SetChannelId(InputIndex);
+ header.Save(&Output);
+
+ NDqProto::TGetTypeResponse response;
+ response.Load(&Input);
+
+ InputType = static_cast<NKikimr::NMiniKQL::TType*>(NKikimr::NMiniKQL::DeserializeNode(response.GetResult(), TaskRunner->GetTypeEnv()));
+ return InputType;
+ }
+
void Pause() override {
Y_FAIL("Checkpoints are not supported");
}
@@ -858,17 +858,17 @@ public:
return false;
}
-private:
- ui64 TaskId;
- ui64 InputIndex;
- mutable TDqSourceStats Stats;
-
- IPipeTaskRunner* TaskRunner;
- IInputStream& Input;
- IOutputStream& Output;
- mutable NKikimr::NMiniKQL::TType* InputType = nullptr;
-};
-
+private:
+ ui64 TaskId;
+ ui64 InputIndex;
+ mutable TDqSourceStats Stats;
+
+ IPipeTaskRunner* TaskRunner;
+ IInputStream& Input;
+ IOutputStream& Output;
+ mutable NKikimr::NMiniKQL::TType* InputType = nullptr;
+};
+
/*______________________________________________________________________________________________*/
class TOutputChannel : public IOutputChannel {
@@ -1370,7 +1370,7 @@ public:
return TypeEnv;
}
- const NMiniKQL::THolderFactory& GetHolderFactory() const override {
+ const NMiniKQL::THolderFactory& GetHolderFactory() const override {
return HolderFactory;
}
@@ -1536,15 +1536,15 @@ public:
}
IDqSource::TPtr GetSource(ui64 inputIndex) override {
- auto& source = Sources[inputIndex];
- if (!source) {
- source = new TDqSource(
- Task.GetId(),
- inputIndex,
- Delegate.Get());
- Stats.Sources[inputIndex] = source->GetStats();
- }
- return source;
+ auto& source = Sources[inputIndex];
+ if (!source) {
+ source = new TDqSource(
+ Task.GetId(),
+ inputIndex,
+ Delegate.Get());
+ Stats.Sources[inputIndex] = source->GetStats();
+ }
+ return source;
}
IDqOutputChannel::TPtr GetOutputChannel(ui64 channelId) override
@@ -1623,7 +1623,7 @@ public:
TString Save() const override {
ythrow yexception() << "unimplemented";
}
-
+
void Load(TStringBuf in) override {
Y_UNUSED(in);
ythrow yexception() << "unimplemented";
@@ -1635,7 +1635,7 @@ private:
mutable TDqTaskRunnerStats Stats;
THashMap<ui64, IDqInputChannel::TPtr> InputChannels;
- THashMap<ui64, IDqSource::TPtr> Sources;
+ THashMap<ui64, IDqSource::TPtr> Sources;
THashMap<ui64, IDqOutputChannel::TPtr> OutputChannels;
THashMap<ui64, IDqSink::TPtr> Sinks;
};
diff --git a/ydb/library/yql/providers/dq/task_runner/tasks_runner_proxy.h b/ydb/library/yql/providers/dq/task_runner/tasks_runner_proxy.h
index 31a6e82784..a008739d02 100644
--- a/ydb/library/yql/providers/dq/task_runner/tasks_runner_proxy.h
+++ b/ydb/library/yql/providers/dq/task_runner/tasks_runner_proxy.h
@@ -67,8 +67,8 @@ public:
virtual const THashMap<TString,TString>& GetTaskParams() const = 0;
virtual const THashMap<TString,TString>& GetSecureParams() const = 0;
virtual const NKikimr::NMiniKQL::TTypeEnvironment& GetTypeEnv() const = 0;
- virtual const NKikimr::NMiniKQL::THolderFactory& GetHolderFactory() const = 0;
-
+ virtual const NKikimr::NMiniKQL::THolderFactory& GetHolderFactory() const = 0;
+
// if memoryLimit = Nothing() then don't set memory limit, use existing one (if any)
// if memoryLimit = 0 then set unlimited
// otherwise use particular memory limit
diff --git a/ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.cpp b/ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.cpp
index e26956545e..000cb66f4b 100644
--- a/ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.cpp
+++ b/ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.cpp
@@ -98,7 +98,7 @@ public:
NPq::NProto::TDqPqTopicSource&& sourceParams,
NPq::NProto::TDqReadTaskParams&& readParams,
NYdb::TDriver driver,
- std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory,
+ std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory,
ICallbacks* callbacks,
i64 bufferSize)
: TActor<TDqPqReadActor>(&TDqPqReadActor::StateFunc)
@@ -107,13 +107,13 @@ public:
, BufferSize(bufferSize)
, HolderFactory(holderFactory)
, Driver(std::move(driver))
- , CredentialsProviderFactory(std::move(credentialsProviderFactory))
+ , CredentialsProviderFactory(std::move(credentialsProviderFactory))
, SourceParams(std::move(sourceParams))
, ReadParams(std::move(readParams))
, StartingMessageTimestamp(TInstant::Now())
, Callbacks(callbacks)
{
- Y_UNUSED(HolderFactory);
+ Y_UNUSED(HolderFactory);
}
NYdb::NPersQueue::TPersQueueClientSettings GetPersQueueClientSettings() const {
@@ -121,7 +121,7 @@ public:
opts.Database(SourceParams.GetDatabase())
.DiscoveryEndpoint(SourceParams.GetEndpoint())
.EnableSsl(SourceParams.GetUseSsl())
- .CredentialsProviderFactory(CredentialsProviderFactory);
+ .CredentialsProviderFactory(CredentialsProviderFactory);
return opts;
}
@@ -310,8 +310,8 @@ private:
LWPROBE(PqReadDataReceived, Self.TxId, Self.SourceParams.GetTopicPath(), data);
SINK_LOG_T("Data received: " << data);
- Batch.emplace_back(NKikimr::NMiniKQL::MakeString(NUdf::TStringRef(data.Data(), data.Size())));
- UsedSpace += data.Size();
+ Batch.emplace_back(NKikimr::NMiniKQL::MakeString(NUdf::TStringRef(data.Data(), data.Size())));
+ UsedSpace += data.Size();
}
Self.UpdateStateWithNewReadData(event);
Self.CurrentDeferredCommit.Add(event);
@@ -352,7 +352,7 @@ private:
const i64 BufferSize;
const THolderFactory& HolderFactory;
NYdb::TDriver Driver;
- std::shared_ptr<NYdb::ICredentialsProviderFactory> CredentialsProviderFactory;
+ std::shared_ptr<NYdb::ICredentialsProviderFactory> CredentialsProviderFactory;
const NPq::NProto::TDqPqTopicSource SourceParams;
const NPq::NProto::TDqReadTaskParams ReadParams;
std::unique_ptr<NYdb::NPersQueue::TPersQueueClient> PersQueueClient;
@@ -360,7 +360,7 @@ private:
NThreading::TFuture<void> EventFuture;
THashMap<TPartitionKey, ui64> PartitionToOffset; // {cluster, partition} -> offset of next event.
TInstant StartingMessageTimestamp;
- ICallbacks* const Callbacks;
+ ICallbacks* const Callbacks;
std::queue<std::pair<ui64, NYdb::NPersQueue::TDeferredCommit>> DeferredCommits;
NYdb::NPersQueue::TDeferredCommit CurrentDeferredCommit;
bool SubscribedOnEvent = false;
@@ -373,11 +373,11 @@ std::pair<IDqSourceActor*, NActors::IActor*> CreateDqPqReadActor(
const THashMap<TString, TString>& secureParams,
const THashMap<TString, TString>& taskParams,
NYdb::TDriver driver,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
- IDqSourceActor::ICallbacks* callbacks,
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
+ IDqSourceActor::ICallbacks* callbacks,
const NKikimr::NMiniKQL::THolderFactory& holderFactory,
- i64 bufferSize
- )
+ i64 bufferSize
+ )
{
auto taskParamsIt = taskParams.find("pq");
YQL_ENSURE(taskParamsIt != taskParams.end(), "Failed to get pq task params");
@@ -385,22 +385,22 @@ std::pair<IDqSourceActor*, NActors::IActor*> CreateDqPqReadActor(
NPq::NProto::TDqReadTaskParams readTaskParamsMsg;
YQL_ENSURE(readTaskParamsMsg.ParseFromString(taskParamsIt->second), "Failed to parse DqPqRead task params");
- const TString& tokenName = settings.GetToken().GetName();
- const TString token = secureParams.Value(tokenName, TString());
+ const TString& tokenName = settings.GetToken().GetName();
+ const TString token = secureParams.Value(tokenName, TString());
const bool addBearerToToken = settings.GetAddBearerToToken();
-
+
TDqPqReadActor* actor = new TDqPqReadActor(
inputIndex,
std::holds_alternative<ui64>(txId) ? ToString(txId) : std::get<TString>(txId),
- holderFactory,
+ holderFactory,
std::move(settings),
std::move(readTaskParamsMsg),
- std::move(driver),
+ std::move(driver),
CreateCredentialsProviderFactoryForStructuredToken(credentialsFactory, token, addBearerToToken),
- callbacks,
- bufferSize
- );
-
+ callbacks,
+ bufferSize
+ );
+
return {actor, actor};
}
@@ -421,8 +421,8 @@ void RegisterDqPqReadActorFactory(TDqSourceFactory& factory, NYdb::TDriver drive
credentialsFactory,
args.Callback,
args.HolderFactory);
- });
-
-}
-
+ });
+
+}
+
} // namespace NYql::NDq
diff --git a/ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.h b/ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.h
index d7e2c82dd0..7030f1b9d3 100644
--- a/ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.h
+++ b/ydb/library/yql/providers/pq/async_io/dq_pq_read_actor.h
@@ -2,10 +2,10 @@
#include <ydb/library/yql/dq/actors/compute/dq_compute_actor_io_actors_factory.h>
#include <ydb/library/yql/dq/actors/compute/dq_compute_actor_sources.h>
-
+
#include <ydb/library/yql/providers/common/token_accessor/client/factory.h>
#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h>
-
+
#include <ydb/library/yql/providers/pq/proto/dq_io.pb.h>
#include <ydb/library/yql/providers/pq/proto/dq_task_params.pb.h>
@@ -18,7 +18,7 @@
namespace NYql::NDq {
-class TDqSourceFactory;
+class TDqSourceFactory;
const i64 PQReadDefaultFreeSpace = 16_MB;
@@ -29,12 +29,12 @@ std::pair<IDqSourceActor*, NActors::IActor*> CreateDqPqReadActor(
const THashMap<TString, TString>& secureParams,
const THashMap<TString, TString>& taskParams,
NYdb::TDriver driver,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
IDqSourceActor::ICallbacks* callback,
const NKikimr::NMiniKQL::THolderFactory& holderFactory,
- i64 bufferSize = PQReadDefaultFreeSpace
- );
+ i64 bufferSize = PQReadDefaultFreeSpace
+ );
void RegisterDqPqReadActorFactory(TDqSourceFactory& factory, NYdb::TDriver driver, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory);
-
+
} // namespace NYql::NDq
diff --git a/ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.cpp b/ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.cpp
index 85fbc91c01..3cb51b36f1 100644
--- a/ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.cpp
+++ b/ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.cpp
@@ -95,15 +95,15 @@ public:
const TString& txId,
NPq::NProto::TDqPqTopicSink&& sinkParams,
NYdb::TDriver driver,
- std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory,
+ std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory,
IDqSinkActor::ICallbacks* callbacks,
i64 freeSpace)
: TActor<TDqPqWriteActor>(&TDqPqWriteActor::StateFunc)
, OutputIndex(outputIndex)
, TxId(txId)
, SinkParams(std::move(sinkParams))
- , Driver(std::move(driver))
- , CredentialsProviderFactory(credentialsProviderFactory)
+ , Driver(std::move(driver))
+ , CredentialsProviderFactory(credentialsProviderFactory)
, Callbacks(callbacks)
, FreeSpace(freeSpace)
, PersQueueClient(Driver, GetPersQueueClientSettings())
@@ -233,12 +233,12 @@ private:
: NYdb::NPersQueue::ECodec::GZIP);
}
- NYdb::NPersQueue::TPersQueueClientSettings GetPersQueueClientSettings() {
- return NYdb::NPersQueue::TPersQueueClientSettings()
+ NYdb::NPersQueue::TPersQueueClientSettings GetPersQueueClientSettings() {
+ return NYdb::NPersQueue::TPersQueueClientSettings()
.Database(SinkParams.GetDatabase())
.DiscoveryEndpoint(SinkParams.GetEndpoint())
.EnableSsl(SinkParams.GetUseSsl())
- .CredentialsProviderFactory(CredentialsProviderFactory);
+ .CredentialsProviderFactory(CredentialsProviderFactory);
}
static i64 GetItemSize(const TString& item) {
@@ -370,7 +370,7 @@ private:
const TString TxId;
const NPq::NProto::TDqPqTopicSink SinkParams;
NYdb::TDriver Driver;
- std::shared_ptr<NYdb::ICredentialsProviderFactory> CredentialsProviderFactory;
+ std::shared_ptr<NYdb::ICredentialsProviderFactory> CredentialsProviderFactory;
IDqSinkActor::ICallbacks* const Callbacks;
i64 FreeSpace = 0;
@@ -394,19 +394,19 @@ std::pair<IDqSinkActor*, NActors::IActor*> CreateDqPqWriteActor(
TTxId txId,
const THashMap<TString, TString>& secureParams,
NYdb::TDriver driver,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
IDqSinkActor::ICallbacks* callbacks,
i64 freeSpace)
{
- const TString& tokenName = settings.GetToken().GetName();
- const TString token = secureParams.Value(tokenName, TString());
+ const TString& tokenName = settings.GetToken().GetName();
+ const TString token = secureParams.Value(tokenName, TString());
const bool addBearerToToken = settings.GetAddBearerToToken();
-
+
TDqPqWriteActor* actor = new TDqPqWriteActor(
outputIndex,
std::holds_alternative<ui64>(txId) ? ToString(txId) : std::get<TString>(txId),
std::move(settings),
- std::move(driver),
+ std::move(driver),
CreateCredentialsProviderFactoryForStructuredToken(credentialsFactory, token, addBearerToToken),
callbacks,
freeSpace);
@@ -415,7 +415,7 @@ std::pair<IDqSinkActor*, NActors::IActor*> CreateDqPqWriteActor(
void RegisterDqPqWriteActorFactory(TDqSinkFactory& factory, NYdb::TDriver driver, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory) {
factory.Register<NPq::NProto::TDqPqTopicSink>("PqSink",
- [driver = std::move(driver), credentialsFactory = std::move(credentialsFactory)](
+ [driver = std::move(driver), credentialsFactory = std::move(credentialsFactory)](
NPq::NProto::TDqPqTopicSink&& settings,
IDqSinkActorFactory::TArguments&& args)
{
@@ -425,10 +425,10 @@ void RegisterDqPqWriteActorFactory(TDqSinkFactory& factory, NYdb::TDriver driver
args.OutputIndex,
args.TxId,
args.SecureParams,
- driver,
- credentialsFactory,
+ driver,
+ credentialsFactory,
args.Callback
- );
+ );
});
}
diff --git a/ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.h b/ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.h
index 6736c8188b..8ae3a38635 100644
--- a/ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.h
+++ b/ydb/library/yql/providers/pq/async_io/dq_pq_write_actor.h
@@ -2,10 +2,10 @@
#include <ydb/library/yql/dq/actors/compute/dq_compute_actor_io_actors_factory.h>
#include <ydb/library/yql/dq/actors/compute/dq_compute_actor_sinks.h>
-
+
#include <ydb/library/yql/providers/common/token_accessor/client/factory.h>
#include <ydb/library/yql/minikql/computation/mkql_computation_node_holders.h>
-
+
#include <ydb/library/yql/providers/pq/proto/dq_io.pb.h>
#include <ydb/library/yql/providers/pq/proto/dq_task_params.pb.h>
@@ -26,7 +26,7 @@ std::pair<IDqSinkActor*, NActors::IActor*> CreateDqPqWriteActor(
TTxId txId,
const THashMap<TString, TString>& secureParams,
NYdb::TDriver driver,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
IDqSinkActor::ICallbacks* callbacks,
i64 freeSpace = DqPqDefaultFreeSpace);
diff --git a/ydb/library/yql/providers/pq/cm_client/interface/client.h b/ydb/library/yql/providers/pq/cm_client/interface/client.h
index 368d2f2039..0520712b36 100644
--- a/ydb/library/yql/providers/pq/cm_client/interface/client.h
+++ b/ydb/library/yql/providers/pq/cm_client/interface/client.h
@@ -161,7 +161,7 @@ using TAsyncDescribePathResult = NThreading::TFuture<TDescribePathResult>;
struct IClient : public TThrRefBase {
using TPtr = TIntrusivePtr<IClient>;
- virtual TAsyncDescribePathResult DescribePath(const TString& path) const = 0;
+ virtual TAsyncDescribePathResult DescribePath(const TString& path) const = 0;
// TODO: If you need other methods, add them.
};
diff --git a/ydb/library/yql/providers/pq/cm_client/lib/client.cpp b/ydb/library/yql/providers/pq/cm_client/lib/client.cpp
index 71d878f5e5..f476612a93 100644
--- a/ydb/library/yql/providers/pq/cm_client/lib/client.cpp
+++ b/ydb/library/yql/providers/pq/cm_client/lib/client.cpp
@@ -229,9 +229,9 @@ public:
};
}
- TAsyncDescribePathResult DescribePath(const TString& path) const override {
+ TAsyncDescribePathResult DescribePath(const TString& path) const override {
NLogBroker::DescribePathRequest describeRequest;
- describeRequest.set_token(Options.GetCredentialsProviderFactory()->CreateProvider()->GetAuthInfo());
+ describeRequest.set_token(Options.GetCredentialsProviderFactory()->CreateProvider()->GetAuthInfo());
describeRequest.mutable_path()->set_path(path);
NThreading::TPromise<TDescribePathResult> promise = NThreading::NewPromise<TDescribePathResult>();
diff --git a/ydb/library/yql/providers/pq/cm_client/lib/client.h b/ydb/library/yql/providers/pq/cm_client/lib/client.h
index 1cc01b1a96..fb98901205 100644
--- a/ydb/library/yql/providers/pq/cm_client/lib/client.h
+++ b/ydb/library/yql/providers/pq/cm_client/lib/client.h
@@ -1,5 +1,5 @@
#pragma once
-
+
#include <ydb/library/yql/providers/pq/cm_client/interface/client.h>
namespace NPq::NConfigurationManager {
diff --git a/ydb/library/yql/providers/pq/common/yql_names.h b/ydb/library/yql/providers/pq/common/yql_names.h
index e4ac47c5cd..d4d8ffc529 100644
--- a/ydb/library/yql/providers/pq/common/yql_names.h
+++ b/ydb/library/yql/providers/pq/common/yql_names.h
@@ -8,6 +8,6 @@ constexpr TStringBuf PartitionsCountProp = "PartitionsCount";
constexpr TStringBuf ConsumerSetting = "Consumer";
constexpr TStringBuf EndpointSetting = "Endpoint";
constexpr TStringBuf UseSslSetting = "UseSsl";
-constexpr TStringBuf AddBearerToTokenSetting = "AddBearerToToken";
+constexpr TStringBuf AddBearerToTokenSetting = "AddBearerToToken";
} // namespace NYql
diff --git a/ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.h b/ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.h
index be54a2c2ae..a455606505 100644
--- a/ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.h
+++ b/ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.h
@@ -34,27 +34,27 @@ public:
}
};
-class TPqDataSink : public NGenerated::TPqDataSinkStub<TExprBase, TCallable, TCoAtom> {
-public:
- explicit TPqDataSink(const TExprNode* node)
- : TPqDataSinkStub(node) {}
-
- explicit TPqDataSink(const TExprNode::TPtr& node)
- : TPqDataSinkStub(node) {}
-
- static bool Match(const TExprNode* node) {
- if (!TPqDataSinkStub::Match(node)) {
- return false;
- }
-
- if (node->Head().Content() != PqProviderName) {
- return false;
- }
-
- return true;
- }
-};
-
+class TPqDataSink : public NGenerated::TPqDataSinkStub<TExprBase, TCallable, TCoAtom> {
+public:
+ explicit TPqDataSink(const TExprNode* node)
+ : TPqDataSinkStub(node) {}
+
+ explicit TPqDataSink(const TExprNode::TPtr& node)
+ : TPqDataSinkStub(node) {}
+
+ static bool Match(const TExprNode* node) {
+ if (!TPqDataSinkStub::Match(node)) {
+ return false;
+ }
+
+ if (node->Head().Content() != PqProviderName) {
+ return false;
+ }
+
+ return true;
+ }
+};
+
#include <ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.defs.inl.h>
} // namespace NNodes
diff --git a/ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.json b/ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.json
index bad47e9d70..13340d1003 100644
--- a/ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.json
+++ b/ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.json
@@ -16,16 +16,16 @@
]
},
{
- "Name": "TPqDataSink",
- "Base": "TCallable",
- "Definition": "Custom",
- "Match": {"Type": "Callable", "Name": "DataSink"},
- "Children": [
- {"Index": 0, "Name": "Category", "Type": "TCoAtom"},
- {"Index": 1, "Name": "Cluster", "Type": "TCoAtom"}
- ]
- },
- {
+ "Name": "TPqDataSink",
+ "Base": "TCallable",
+ "Definition": "Custom",
+ "Match": {"Type": "Callable", "Name": "DataSink"},
+ "Children": [
+ {"Index": 0, "Name": "Category", "Type": "TCoAtom"},
+ {"Index": 1, "Name": "Cluster", "Type": "TCoAtom"}
+ ]
+ },
+ {
"Name": "TPqTopic",
"Base": "TCallable",
"Match": {"Type": "Callable", "Name": "PqTopic"},
@@ -34,8 +34,8 @@
{"Index": 1, "Name": "Database", "Type": "TCoAtom"},
{"Index": 2, "Name": "Path", "Type": "TCoAtom"},
{"Index": 3, "Name": "Props", "Type": "TCoNameValueTupleList"},
- {"Index": 4, "Name": "Metadata", "Type": "TCoNameValueTupleList"},
- {"Index": 5, "Name": "RowSpec", "Type": "TExprBase"}
+ {"Index": 4, "Name": "Metadata", "Type": "TCoNameValueTupleList"},
+ {"Index": 5, "Name": "RowSpec", "Type": "TExprBase"}
]
},
{
@@ -56,12 +56,12 @@
{"Index": 1, "Name": "DataSource", "Type": "TPqDataSource"},
{"Index": 2, "Name": "Topic", "Type": "TPqTopic"},
{"Index": 3, "Name": "Columns", "Type": "TExprBase"},
- {"Index": 4, "Name": "Format", "Type": "TCoAtom"},
- {"Index": 5, "Name": "Compression", "Type": "TCoAtom"},
- {"Index": 6, "Name": "LimitHint", "Type": "TExprBase", "Optional": true}
+ {"Index": 4, "Name": "Format", "Type": "TCoAtom"},
+ {"Index": 5, "Name": "Compression", "Type": "TCoAtom"},
+ {"Index": 6, "Name": "LimitHint", "Type": "TExprBase", "Optional": true}
]
- },
- {
+ },
+ {
"Name": "TDqPqTopicSource",
"Base": "TCallable",
"Match": {"Type": "Callable", "Name": "DqPqTopicSource"},
@@ -69,7 +69,7 @@
{"Index": 0, "Name": "Topic", "Type": "TPqTopic"},
{"Index": 1, "Name": "Columns", "Type": "TExprBase"},
{"Index": 2, "Name": "Settings", "Type": "TCoNameValueTupleList"},
- {"Index": 3, "Name": "Token", "Type": "TCoSecureParam"}
+ {"Index": 3, "Name": "Token", "Type": "TCoSecureParam"}
]
},
{
@@ -79,7 +79,7 @@
"Children": [
{"Index": 0, "Name": "Topic", "Type": "TPqTopic"},
{"Index": 1, "Name": "Settings", "Type": "TCoNameValueTupleList"},
- {"Index": 2, "Name": "Token", "Type": "TCoSecureParam"}
+ {"Index": 2, "Name": "Token", "Type": "TCoSecureParam"}
]
},
{
@@ -92,26 +92,26 @@
]
},
{
- "Name": "TPqWriteTopic",
- "Base": "TCallable",
- "Match": {"Type": "Callable", "Name": "PqWriteTopic!"},
- "Children": [
- {"Index": 0, "Name": "World", "Type": "TExprBase"},
- {"Index": 1, "Name": "DataSink", "Type": "TPqDataSink"},
+ "Name": "TPqWriteTopic",
+ "Base": "TCallable",
+ "Match": {"Type": "Callable", "Name": "PqWriteTopic!"},
+ "Children": [
+ {"Index": 0, "Name": "World", "Type": "TExprBase"},
+ {"Index": 1, "Name": "DataSink", "Type": "TPqDataSink"},
{"Index": 2, "Name": "Topic", "Type": "TPqTopic"},
- {"Index": 3, "Name": "Input", "Type": "TExprBase"},
- {"Index": 4, "Name": "Mode", "Type": "TCoAtom"},
- {"Index": 5, "Name": "Settings", "Type": "TCoNameValueTupleList"}
- ]
- },
- {
- "Name": "TPqClusterConfig",
- "Base": "TCallable",
- "Match": {"Type": "Callable", "Name": "PqClusterConfig"},
- "Children": [
- {"Index": 0, "Name": "Endpoint", "Type": "TCoAtom"},
- {"Index": 1, "Name": "TvmId", "Type": "TCoAtom"}
- ]
+ {"Index": 3, "Name": "Input", "Type": "TExprBase"},
+ {"Index": 4, "Name": "Mode", "Type": "TCoAtom"},
+ {"Index": 5, "Name": "Settings", "Type": "TCoNameValueTupleList"}
+ ]
+ },
+ {
+ "Name": "TPqClusterConfig",
+ "Base": "TCallable",
+ "Match": {"Type": "Callable", "Name": "PqClusterConfig"},
+ "Children": [
+ {"Index": 0, "Name": "Endpoint", "Type": "TCoAtom"},
+ {"Index": 1, "Name": "TvmId", "Type": "TCoAtom"}
+ ]
}
]
}
diff --git a/ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.cpp b/ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.cpp
index b1d64befb3..a37f5c5578 100644
--- a/ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.cpp
+++ b/ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.cpp
@@ -7,7 +7,7 @@
namespace NYql {
-NThreading::TFuture<void> TDummyPqGateway::OpenSession(const TString& sessionId, const TString& username) {
+NThreading::TFuture<void> TDummyPqGateway::OpenSession(const TString& sessionId, const TString& username) {
with_lock (Mutex) {
Y_ENSURE(sessionId);
Y_ENSURE(username);
@@ -25,9 +25,9 @@ void TDummyPqGateway::CloseSession(const TString& sessionId) {
}
}
-NPq::NConfigurationManager::TAsyncDescribePathResult TDummyPqGateway::DescribePath(const TString& sessionId, const TString& cluster, const TString& database, const TString& path, const TString& token) {
+NPq::NConfigurationManager::TAsyncDescribePathResult TDummyPqGateway::DescribePath(const TString& sessionId, const TString& cluster, const TString& database, const TString& path, const TString& token) {
Y_UNUSED(database);
- Y_UNUSED(token);
+ Y_UNUSED(token);
with_lock (Mutex) {
Y_ENSURE(IsIn(OpenedSessions, sessionId), "Session " << sessionId << " is not opened in pq gateway");
const auto key = std::make_pair(cluster, path);
diff --git a/ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.h b/ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.h
index 753c849c20..c2fce502c6 100644
--- a/ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.h
+++ b/ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.h
@@ -31,10 +31,10 @@ public:
TDummyPqGateway& AddDummyTopic(const TDummyTopic& topic);
public:
- NThreading::TFuture<void> OpenSession(const TString& sessionId, const TString& username) override;
+ NThreading::TFuture<void> OpenSession(const TString& sessionId, const TString& username) override;
void CloseSession(const TString& sessionId) override;
- NPq::NConfigurationManager::TAsyncDescribePathResult DescribePath(const TString& sessionId, const TString& cluster, const TString& database, const TString& path, const TString& token) override;
+ NPq::NConfigurationManager::TAsyncDescribePathResult DescribePath(const TString& sessionId, const TString& cluster, const TString& database, const TString& path, const TString& token) override;
void UpdateClusterConfigs(
const TString& clusterName,
@@ -43,7 +43,7 @@ public:
bool secure) override;
private:
- mutable TMutex Mutex;
+ mutable TMutex Mutex;
THashMap<std::pair<TString, TString>, TDummyTopic> Topics;
THashSet<TString> OpenedSessions;
};
diff --git a/ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.cpp b/ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.cpp
index bd89565050..1fe1aa287c 100644
--- a/ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.cpp
+++ b/ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.cpp
@@ -16,7 +16,7 @@ public:
explicit TPqNativeGateway(const TPqGatewayServices& services);
~TPqNativeGateway();
- NThreading::TFuture<void> OpenSession(const TString& sessionId, const TString& username) override;
+ NThreading::TFuture<void> OpenSession(const TString& sessionId, const TString& username) override;
void CloseSession(const TString& sessionId) override;
NPq::NConfigurationManager::TAsyncDescribePathResult DescribePath(
@@ -25,7 +25,7 @@ public:
const TString& database,
const TString& path,
const TString& token) override;
-
+
void UpdateClusterConfigs(
const TString& clusterName,
const TString& endpoint,
@@ -34,14 +34,14 @@ public:
private:
void InitClusterConfigs();
- TPqSession::TPtr GetExistingSession(const TString& sessionId) const;
+ TPqSession::TPtr GetExistingSession(const TString& sessionId) const;
private:
- mutable TMutex Mutex;
+ mutable TMutex Mutex;
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry = nullptr;
TPqGatewayConfigPtr Config;
IMetricsRegistryPtr Metrics;
- ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
+ ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
::NPq::NConfigurationManager::IConnections::TPtr CmConnections;
NYdb::TDriver YdbDriver;
TPqClusterConfigsMapPtr ClusterConfigs;
@@ -52,7 +52,7 @@ TPqNativeGateway::TPqNativeGateway(const TPqGatewayServices& services)
: FunctionRegistry(services.FunctionRegistry)
, Config(services.Config)
, Metrics(services.Metrics)
- , CredentialsFactory(services.CredentialsFactory)
+ , CredentialsFactory(services.CredentialsFactory)
, CmConnections(services.CmConnections)
, YdbDriver(services.YdbDriver)
{
@@ -84,7 +84,7 @@ void TPqNativeGateway::UpdateClusterConfigs(
}
}
-NThreading::TFuture<void> TPqNativeGateway::OpenSession(const TString& sessionId, const TString& username) {
+NThreading::TFuture<void> TPqNativeGateway::OpenSession(const TString& sessionId, const TString& username) {
with_lock (Mutex) {
auto [sessionIt, isNewSession] = Sessions.emplace(sessionId,
MakeIntrusive<TPqSession>(sessionId,
@@ -92,7 +92,7 @@ NThreading::TFuture<void> TPqNativeGateway::OpenSession(const TString& sessionId
CmConnections,
YdbDriver,
ClusterConfigs,
- CredentialsFactory));
+ CredentialsFactory));
if (!isNewSession) {
YQL_LOG_CTX_THROW yexception() << "Session already exists: " << sessionId;
}
@@ -104,20 +104,20 @@ void TPqNativeGateway::CloseSession(const TString& sessionId) {
with_lock (Mutex) {
Sessions.erase(sessionId);
}
-}
-
-TPqSession::TPtr TPqNativeGateway::GetExistingSession(const TString& sessionId) const {
+}
+
+TPqSession::TPtr TPqNativeGateway::GetExistingSession(const TString& sessionId) const {
with_lock (Mutex) {
auto sessionIt = Sessions.find(sessionId);
if (sessionIt == Sessions.end()) {
YQL_LOG_CTX_THROW yexception() << "Pq gateway session was not found: " << sessionId;
}
return sessionIt->second;
- }
+ }
}
-NPq::NConfigurationManager::TAsyncDescribePathResult TPqNativeGateway::DescribePath(const TString& sessionId, const TString& cluster, const TString& database, const TString& path, const TString& token) {
- return GetExistingSession(sessionId)->DescribePath(cluster, database, path, token);
+NPq::NConfigurationManager::TAsyncDescribePathResult TPqNativeGateway::DescribePath(const TString& sessionId, const TString& cluster, const TString& database, const TString& path, const TString& token) {
+ return GetExistingSession(sessionId)->DescribePath(cluster, database, path, token);
}
IPqGateway::TPtr CreatePqNativeGateway(const TPqGatewayServices& services) {
diff --git a/ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.h b/ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.h
index 29f05d1e95..b839f89d63 100644
--- a/ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.h
+++ b/ydb/library/yql/providers/pq/gateway/native/yql_pq_gateway.h
@@ -1,11 +1,11 @@
#pragma once
-
+
#include <ydb/library/yql/providers/common/metrics/metrics_registry.h>
#include <ydb/library/yql/providers/pq/cm_client/interface/client.h>
#include <ydb/library/yql/providers/pq/provider/yql_pq_gateway.h>
#include <ydb/library/yql/providers/common/token_accessor/client/factory.h>
-
+
#include <ydb/public/sdk/cpp/client/ydb_driver/driver.h>
#include <util/generic/ptr.h>
@@ -23,7 +23,7 @@ struct TPqGatewayServices {
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry = nullptr;
TPqGatewayConfigPtr Config;
IMetricsRegistryPtr Metrics;
- ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
+ ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
::NPq::NConfigurationManager::IConnections::TPtr CmConnections;
NYdb::TDriver YdbDriver;
diff --git a/ydb/library/yql/providers/pq/gateway/native/yql_pq_session.cpp b/ydb/library/yql/providers/pq/gateway/native/yql_pq_session.cpp
index cd536762e4..143b50f256 100644
--- a/ydb/library/yql/providers/pq/gateway/native/yql_pq_session.cpp
+++ b/ydb/library/yql/providers/pq/gateway/native/yql_pq_session.cpp
@@ -4,38 +4,38 @@
namespace NYql {
-namespace {
-NPq::NConfigurationManager::TClientOptions GetCmClientOptions(const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory) {
+namespace {
+NPq::NConfigurationManager::TClientOptions GetCmClientOptions(const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory) {
NPq::NConfigurationManager::TClientOptions opts;
- opts
- .SetEndpoint(cfg.GetConfigManagerEndpoint())
+ opts
+ .SetEndpoint(cfg.GetConfigManagerEndpoint())
.SetCredentialsProviderFactory(credentialsProviderFactory)
.SetEnableSsl(cfg.GetUseSsl());
-
+
return opts;
}
-NYdb::NPersQueue::TPersQueueClientSettings GetYdbPqClientOptions(const TString& database, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory) {
+NYdb::NPersQueue::TPersQueueClientSettings GetYdbPqClientOptions(const TString& database, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory) {
NYdb::NPersQueue::TPersQueueClientSettings opts;
opts
.DiscoveryEndpoint(cfg.GetEndpoint())
.Database(database)
- .EnableSsl(cfg.GetUseSsl())
- .CredentialsProviderFactory(credentialsProviderFactory);
-
+ .EnableSsl(cfg.GetUseSsl())
+ .CredentialsProviderFactory(credentialsProviderFactory);
+
return opts;
}
-}
+}
-const NPq::NConfigurationManager::IClient::TPtr& TPqSession::GetConfigManagerClient(const TString& cluster, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory) {
- auto& client = ClusterCmClients[cluster];
+const NPq::NConfigurationManager::IClient::TPtr& TPqSession::GetConfigManagerClient(const TString& cluster, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory) {
+ auto& client = ClusterCmClients[cluster];
if (!client && CmConnections) {
- client = CmConnections->GetClient(GetCmClientOptions(cfg, credentialsProviderFactory));
- }
- return client;
-}
-
-NYdb::NPersQueue::TPersQueueClient& TPqSession::GetYdbPqClient(const TString& cluster, const TString& database, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory) {
+ client = CmConnections->GetClient(GetCmClientOptions(cfg, credentialsProviderFactory));
+ }
+ return client;
+}
+
+NYdb::NPersQueue::TPersQueueClient& TPqSession::GetYdbPqClient(const TString& cluster, const TString& database, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory) {
const auto clientIt = ClusterYdbPqClients.find(cluster);
if (clientIt != ClusterYdbPqClients.end()) {
return clientIt->second;
@@ -43,17 +43,17 @@ NYdb::NPersQueue::TPersQueueClient& TPqSession::GetYdbPqClient(const TString& cl
return ClusterYdbPqClients.emplace(cluster, NYdb::NPersQueue::TPersQueueClient(YdbDriver, GetYdbPqClientOptions(database, cfg, credentialsProviderFactory))).first->second;
}
-NPq::NConfigurationManager::TAsyncDescribePathResult TPqSession::DescribePath(const TString& cluster, const TString& database, const TString& path, const TString& token) {
- const auto* config = ClusterConfigs->FindPtr(cluster);
- if (!config) {
+NPq::NConfigurationManager::TAsyncDescribePathResult TPqSession::DescribePath(const TString& cluster, const TString& database, const TString& path, const TString& token) {
+ const auto* config = ClusterConfigs->FindPtr(cluster);
+ if (!config) {
ythrow yexception() << "Pq cluster `" << cluster << "` does not exist";
- }
-
+ }
+
YQL_ENSURE(config->GetEndpoint(), "Can't describe topic `" << cluster << "`.`" << path << "`: no endpoint");
- std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(CredentialsFactory, token, config->GetAddBearerToToken());
+ std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(CredentialsFactory, token, config->GetAddBearerToToken());
with_lock (Mutex) {
- if (config->GetClusterType() == TPqClusterConfig::CT_PERS_QUEUE) {
+ if (config->GetClusterType() == TPqClusterConfig::CT_PERS_QUEUE) {
const NPq::NConfigurationManager::IClient::TPtr& client = GetConfigManagerClient(cluster, *config, credentialsProviderFactory);
if (!client) {
NThreading::TPromise<::NPq::NConfigurationManager::TDescribePathResult> result = NThreading::NewPromise<::NPq::NConfigurationManager::TDescribePathResult>();
@@ -65,16 +65,16 @@ NPq::NConfigurationManager::TAsyncDescribePathResult TPqSession::DescribePath(co
}
return client->DescribePath(path);
}
-
+
return GetYdbPqClient(cluster, database, *config, credentialsProviderFactory).DescribeTopic(path).Apply([cluster, path](const NYdb::NPersQueue::TAsyncDescribeTopicResult& describeTopicResultFuture) {
- const NYdb::NPersQueue::TDescribeTopicResult& describeTopicResult = describeTopicResultFuture.GetValue();
- if (!describeTopicResult.IsSuccess()) {
+ const NYdb::NPersQueue::TDescribeTopicResult& describeTopicResult = describeTopicResultFuture.GetValue();
+ if (!describeTopicResult.IsSuccess()) {
throw yexception() << "Failed to describe topic `" << cluster << "`.`" << path << "`: " << describeTopicResult.GetIssues().ToString();
}
- NPq::NConfigurationManager::TTopicDescription desc(path);
- desc.PartitionsCount = describeTopicResult.TopicSettings().PartitionsCount();
- return NPq::NConfigurationManager::TDescribePathResult::Make<NPq::NConfigurationManager::TTopicDescription>(std::move(desc));
- });
+ NPq::NConfigurationManager::TTopicDescription desc(path);
+ desc.PartitionsCount = describeTopicResult.TopicSettings().PartitionsCount();
+ return NPq::NConfigurationManager::TDescribePathResult::Make<NPq::NConfigurationManager::TTopicDescription>(std::move(desc));
+ });
}
}
diff --git a/ydb/library/yql/providers/pq/gateway/native/yql_pq_session.h b/ydb/library/yql/providers/pq/gateway/native/yql_pq_session.h
index 23129837f0..2e386a122c 100644
--- a/ydb/library/yql/providers/pq/gateway/native/yql_pq_session.h
+++ b/ydb/library/yql/providers/pq/gateway/native/yql_pq_session.h
@@ -1,7 +1,7 @@
#pragma once
-
+
#include <ydb/public/sdk/cpp/client/ydb_persqueue_core/persqueue.h>
-
+
#include <ydb/library/yql/providers/common/token_accessor/client/factory.h>
#include <ydb/library/yql/providers/common/proto/gateways_config.pb.h>
#include <ydb/library/yql/providers/pq/cm_client/interface/client.h>
@@ -23,21 +23,21 @@ public:
const NPq::NConfigurationManager::IConnections::TPtr& cmConnections,
const NYdb::TDriver& ydbDriver,
const TPqClusterConfigsMapPtr& clusterConfigs,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory)
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory)
: SessionId(sessionId)
, UserName(username)
, CmConnections(cmConnections)
, YdbDriver(ydbDriver)
, ClusterConfigs(clusterConfigs)
- , CredentialsFactory(credentialsFactory)
+ , CredentialsFactory(credentialsFactory)
{
}
- NPq::NConfigurationManager::TAsyncDescribePathResult DescribePath(const TString& cluster, const TString& database, const TString& path, const TString& token);
+ NPq::NConfigurationManager::TAsyncDescribePathResult DescribePath(const TString& cluster, const TString& database, const TString& path, const TString& token);
private:
- const NPq::NConfigurationManager::IClient::TPtr& GetConfigManagerClient(const TString& cluster, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory);
- NYdb::NPersQueue::TPersQueueClient& GetYdbPqClient(const TString& cluster, const TString& database, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory);
+ const NPq::NConfigurationManager::IClient::TPtr& GetConfigManagerClient(const TString& cluster, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory);
+ NYdb::NPersQueue::TPersQueueClient& GetYdbPqClient(const TString& cluster, const TString& database, const NYql::TPqClusterConfig& cfg, std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory);
private:
const TString SessionId;
@@ -45,11 +45,11 @@ private:
const NPq::NConfigurationManager::IConnections::TPtr CmConnections;
const NYdb::TDriver YdbDriver;
const TPqClusterConfigsMapPtr ClusterConfigs;
- const ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
-
- TMutex Mutex;
+ const ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
+
+ TMutex Mutex;
THashMap<TString, NPq::NConfigurationManager::IClient::TPtr> ClusterCmClients; // Cluster -> CM Client.
- THashMap<TString, NYdb::NPersQueue::TPersQueueClient> ClusterYdbPqClients; // Cluster -> PQ Client.
+ THashMap<TString, NYdb::NPersQueue::TPersQueueClient> ClusterYdbPqClients; // Cluster -> PQ Client.
};
} // namespace NYql
diff --git a/ydb/library/yql/providers/pq/proto/dq_io.proto b/ydb/library/yql/providers/pq/proto/dq_io.proto
index e87eb72755..997f1e7046 100644
--- a/ydb/library/yql/providers/pq/proto/dq_io.proto
+++ b/ydb/library/yql/providers/pq/proto/dq_io.proto
@@ -22,7 +22,7 @@ message TDqPqTopicSource {
string Database = 5;
EClusterType ClusterType = 6;
bool UseSsl = 7;
- bool AddBearerToToken = 8;
+ bool AddBearerToToken = 8;
string DatabaseId = 9;
}
@@ -32,6 +32,6 @@ message TDqPqTopicSink {
TToken Token = 3;
string Database = 4;
bool UseSsl = 5;
- bool AddBearerToToken = 6;
+ bool AddBearerToToken = 6;
EClusterType ClusterType = 7;
}
diff --git a/ydb/library/yql/providers/pq/provider/ut/ya.make b/ydb/library/yql/providers/pq/provider/ut/ya.make
index 66015a4f05..dd47181ab4 100644
--- a/ydb/library/yql/providers/pq/provider/ut/ya.make
+++ b/ydb/library/yql/providers/pq/provider/ut/ya.make
@@ -1,12 +1,12 @@
UNITTEST_FOR(ydb/library/yql/providers/pq/provider)
-
+
OWNER(g:yql)
-
-SRCS(
- yql_pq_ut.cpp
-)
-
-PEERDIR(
+
+SRCS(
+ yql_pq_ut.cpp
+)
+
+PEERDIR(
ydb/core/yq/libs/db_resolver
ydb/library/yql/core/facade
ydb/library/yql/core/file_storage
@@ -23,17 +23,17 @@ PEERDIR(
ydb/library/yql/providers/pq/provider
ydb/library/yql/providers/solomon/gateway
ydb/library/yql/providers/solomon/provider
-)
-
-YQL_LAST_ABI_VERSION()
-
-IF (SANITIZER_TYPE OR WITH_VALGRIND)
- TIMEOUT(1800)
- SIZE(LARGE)
- TAG(ya:fat)
-ELSE()
- TIMEOUT(600)
- SIZE(MEDIUM)
-ENDIF()
-
-END()
+)
+
+YQL_LAST_ABI_VERSION()
+
+IF (SANITIZER_TYPE OR WITH_VALGRIND)
+ TIMEOUT(1800)
+ SIZE(LARGE)
+ TAG(ya:fat)
+ELSE()
+ TIMEOUT(600)
+ SIZE(MEDIUM)
+ENDIF()
+
+END()
diff --git a/ydb/library/yql/providers/pq/provider/ya.make b/ydb/library/yql/providers/pq/provider/ya.make
index ead04a48fc..b9107dd21e 100644
--- a/ydb/library/yql/providers/pq/provider/ya.make
+++ b/ydb/library/yql/providers/pq/provider/ya.make
@@ -14,13 +14,13 @@ SRCS(
yql_pq_datasource.cpp
yql_pq_datasource_type_ann.cpp
yql_pq_dq_integration.cpp
- yql_pq_io_discovery.cpp
+ yql_pq_io_discovery.cpp
yql_pq_load_meta.cpp
yql_pq_logical_opt.cpp
yql_pq_mkql_compiler.cpp
yql_pq_physical_optimize.cpp
yql_pq_provider.cpp
- yql_pq_provider_impl.cpp
+ yql_pq_provider_impl.cpp
yql_pq_settings.cpp
yql_pq_topic_key_parser.cpp
yql_pq_helpers.cpp
@@ -60,7 +60,7 @@ PEERDIR(
YQL_LAST_ABI_VERSION()
END()
-
+
IF (NOT OPENSOURCE)
RECURSE_FOR_TESTS(
ut
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_datasink.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_datasink.cpp
index 380df33d52..a8ba7ee83a 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_datasink.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_datasink.cpp
@@ -17,22 +17,22 @@ using namespace NNodes;
namespace {
-void ScanPlanDependencies(const TExprNode::TPtr& input, TExprNode::TListType& children) {
- VisitExpr(input, [&children](const TExprNode::TPtr& node) {
- if (node->IsCallable("DqCnResult")) {
- children.push_back(node->Child(0));
- return false;
- }
-
- return true;
- });
-}
-
-class TPqDataSinkProvider : public TDataProviderBase {
+void ScanPlanDependencies(const TExprNode::TPtr& input, TExprNode::TListType& children) {
+ VisitExpr(input, [&children](const TExprNode::TPtr& node) {
+ if (node->IsCallable("DqCnResult")) {
+ children.push_back(node->Child(0));
+ return false;
+ }
+
+ return true;
+ });
+}
+
+class TPqDataSinkProvider : public TDataProviderBase {
public:
- TPqDataSinkProvider(TPqState::TPtr state, IPqGateway::TPtr gateway)
+ TPqDataSinkProvider(TPqState::TPtr state, IPqGateway::TPtr gateway)
: State_(state)
- , Gateway_(gateway)
+ , Gateway_(gateway)
, IODiscoveryTransformer_(CreatePqDataSinkIODiscoveryTransformer(State_))
, TypeAnnotationTransformer_(CreatePqDataSinkTypeAnnotationTransformer(State_))
, ExecutionTransformer_(CreatePqDataSinkExecTransformer(State_))
@@ -46,10 +46,10 @@ public:
}
bool CanParse(const TExprNode& node) override {
- if (node.IsCallable(TCoWrite::CallableName())) {
+ if (node.IsCallable(TCoWrite::CallableName())) {
return TPqDataSink::Match(node.Child(1));
- }
-
+ }
+
return TypeAnnotationTransformer_->CanParse(node);
}
@@ -95,15 +95,15 @@ public:
return *PhysicalOptProposalTransformer_;
}
- TExprNode::TPtr RewriteIO(const TExprNode::TPtr& node, TExprContext& ctx) override {
+ TExprNode::TPtr RewriteIO(const TExprNode::TPtr& node, TExprContext& ctx) override {
auto maybePqWrite = TMaybeNode<TPqWrite>(node);
YQL_ENSURE(maybePqWrite.DataSink(), "Expected Write!, got: " << node->Content());
- YQL_CLOG(INFO, ProviderPq) << "Rewrite " << node->Content();
- const TCoWrite write(node);
- TTopicKeyParser key;
- YQL_ENSURE(key.Parse(*node->Child(2), nullptr, ctx), "Failed to extract topic name.");
- const auto settings = NCommon::ParseWriteTableSettings(TExprList(node->Child(4)), ctx);
+ YQL_CLOG(INFO, ProviderPq) << "Rewrite " << node->Content();
+ const TCoWrite write(node);
+ TTopicKeyParser key;
+ YQL_ENSURE(key.Parse(*node->Child(2), nullptr, ctx), "Failed to extract topic name.");
+ const auto settings = NCommon::ParseWriteTableSettings(TExprList(node->Child(4)), ctx);
YQL_ENSURE(settings.Mode.Cast() == "append", "Only append write mode is supported for writing into topic");
const auto cluster = TString(maybePqWrite.Cast().DataSink().Cluster().Value());
@@ -116,64 +116,64 @@ public:
auto topicNode = Build<TPqTopic>(ctx, write.Pos())
.Cluster().Value(cluster).Build()
.Database().Value(State_->Configuration->GetDatabaseForTopic(cluster)).Build()
- .RowSpec(found->RowSpec)
+ .RowSpec(found->RowSpec)
.Path().Value(key.GetTopicPath()).Build()
.Props(BuildTopicPropsList(*found, write.Pos(), ctx))
.Metadata().Build()
.Done();
return Build<TPqWriteTopic>(ctx, node->Pos())
- .World(write.World())
- .DataSink(write.DataSink().Ptr())
+ .World(write.World())
+ .DataSink(write.DataSink().Ptr())
.Topic(topicNode)
- .Input(node->Child(3))
- .Mode(settings.Mode.Cast())
- .Settings(settings.Other)
- .Done().Ptr();
- }
-
- TExprNode::TPtr GetClusterInfo(const TString& cluster, TExprContext& ctx) override {
+ .Input(node->Child(3))
+ .Mode(settings.Mode.Cast())
+ .Settings(settings.Other)
+ .Done().Ptr();
+ }
+
+ TExprNode::TPtr GetClusterInfo(const TString& cluster, TExprContext& ctx) override {
const auto* config = State_->Configuration->ClustersConfigurationSettings.FindPtr(cluster);
- if (!config) {
- return {};
- }
-
- TPositionHandle pos;
- return Build<NNodes::TPqClusterConfig>(ctx, pos)
+ if (!config) {
+ return {};
+ }
+
+ TPositionHandle pos;
+ return Build<NNodes::TPqClusterConfig>(ctx, pos)
.Endpoint<TCoAtom>().Build(config->Endpoint)
.TvmId<TCoAtom>().Build(ToString(config->TvmId))
- .Done().Ptr();
- }
-
- void GetOutputs(const TExprNode& node, TVector<TPinInfo>& outputs) override {
- if (auto maybeOp = TMaybeNode<TPqWriteTopic>(&node)) {
- auto op = maybeOp.Cast();
- outputs.push_back(TPinInfo(nullptr, op.DataSink().Raw(), op.Topic().Raw(), MakeTopicDisplayName(op.Topic().Cluster().Value(), op.Topic().Path().Value()), false));
- }
- }
-
- bool GetDependencies(const TExprNode& node, TExprNode::TListType& children, bool compact) override {
- Y_UNUSED(compact);
- if (CanExecute(node)) {
- children.push_back(node.ChildPtr(0));
-
- if (TMaybeNode<TPqWriteTopic>(&node)) {
- ScanPlanDependencies(node.ChildPtr(TPqWriteTopic::idx_Input), children);
- }
-
- return true;
- }
-
- return false;
- }
-
+ .Done().Ptr();
+ }
+
+ void GetOutputs(const TExprNode& node, TVector<TPinInfo>& outputs) override {
+ if (auto maybeOp = TMaybeNode<TPqWriteTopic>(&node)) {
+ auto op = maybeOp.Cast();
+ outputs.push_back(TPinInfo(nullptr, op.DataSink().Raw(), op.Topic().Raw(), MakeTopicDisplayName(op.Topic().Cluster().Value(), op.Topic().Path().Value()), false));
+ }
+ }
+
+ bool GetDependencies(const TExprNode& node, TExprNode::TListType& children, bool compact) override {
+ Y_UNUSED(compact);
+ if (CanExecute(node)) {
+ children.push_back(node.ChildPtr(0));
+
+ if (TMaybeNode<TPqWriteTopic>(&node)) {
+ ScanPlanDependencies(node.ChildPtr(TPqWriteTopic::idx_Input), children);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
IDqIntegration* GetDqIntegration() override {
return State_->DqIntegration.Get();
}
private:
TPqState::TPtr State_;
- IPqGateway::TPtr Gateway_;
+ IPqGateway::TPtr Gateway_;
THolder<IGraphTransformer> IODiscoveryTransformer_;
THolder<TVisitorTransformerBase> TypeAnnotationTransformer_;
THolder<TExecTransformerBase> ExecutionTransformer_;
@@ -183,8 +183,8 @@ private:
}
-TIntrusivePtr<IDataProvider> CreatePqDataSink(TPqState::TPtr state, IPqGateway::TPtr gateway) {
- return new TPqDataSinkProvider(state, gateway);
+TIntrusivePtr<IDataProvider> CreatePqDataSink(TPqState::TPtr state, IPqGateway::TPtr gateway) {
+ return new TPqDataSinkProvider(state, gateway);
}
} // namespace NYql
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_datasink_type_ann.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_datasink_type_ann.cpp
index 6109bbe42e..8a79954bef 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_datasink_type_ann.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_datasink_type_ann.cpp
@@ -15,33 +15,33 @@ namespace NYql {
using namespace NNodes;
namespace {
-bool EnsureStructTypeWithSingleStringMember(const TTypeAnnotationNode* input, TPositionHandle pos, TExprContext& ctx) {
- YQL_ENSURE(input);
- auto itemSchema = input->Cast<TListExprType>()->GetItemType()->Cast<TStructExprType>();
- if (itemSchema->GetSize() != 1) {
- ctx.AddError(TIssue(ctx.GetPosition(pos), TStringBuilder() << "only struct with single string, yson or json field is accepted, but has struct with " << itemSchema->GetSize() << " members"));
- return false;
- }
-
- auto column = itemSchema->GetItems()[0];
- auto columnType = column->GetItemType();
- if (columnType->GetKind() != ETypeAnnotationKind::Data) {
- ctx.AddError(TIssue(ctx.GetPosition(pos), TStringBuilder() << "Column " << column->GetName() << " must have a data type, but has " << columnType->GetKind()));
- return false;
- }
-
- auto columnDataType = columnType->Cast<TDataExprType>();
- auto dataSlot = columnDataType->GetSlot();
-
- if (dataSlot != NUdf::EDataSlot::String &&
- dataSlot != NUdf::EDataSlot::Yson &&
- dataSlot != NUdf::EDataSlot::Json) {
- ctx.AddError(TIssue(ctx.GetPosition(pos), TStringBuilder() << "Column " << column->GetName() << " is not a string, yson or json, but " << NUdf::GetDataTypeInfo(dataSlot).Name));
- return false;
- }
- return true;
-}
-
+bool EnsureStructTypeWithSingleStringMember(const TTypeAnnotationNode* input, TPositionHandle pos, TExprContext& ctx) {
+ YQL_ENSURE(input);
+ auto itemSchema = input->Cast<TListExprType>()->GetItemType()->Cast<TStructExprType>();
+ if (itemSchema->GetSize() != 1) {
+ ctx.AddError(TIssue(ctx.GetPosition(pos), TStringBuilder() << "only struct with single string, yson or json field is accepted, but has struct with " << itemSchema->GetSize() << " members"));
+ return false;
+ }
+
+ auto column = itemSchema->GetItems()[0];
+ auto columnType = column->GetItemType();
+ if (columnType->GetKind() != ETypeAnnotationKind::Data) {
+ ctx.AddError(TIssue(ctx.GetPosition(pos), TStringBuilder() << "Column " << column->GetName() << " must have a data type, but has " << columnType->GetKind()));
+ return false;
+ }
+
+ auto columnDataType = columnType->Cast<TDataExprType>();
+ auto dataSlot = columnDataType->GetSlot();
+
+ if (dataSlot != NUdf::EDataSlot::String &&
+ dataSlot != NUdf::EDataSlot::Yson &&
+ dataSlot != NUdf::EDataSlot::Json) {
+ ctx.AddError(TIssue(ctx.GetPosition(pos), TStringBuilder() << "Column " << column->GetName() << " is not a string, yson or json, but " << NUdf::GetDataTypeInfo(dataSlot).Name));
+ return false;
+ }
+ return true;
+}
+
class TPqDataSinkTypeAnnotationTransformer : public TVisitorTransformerBase {
public:
TPqDataSinkTypeAnnotationTransformer(TPqState::TPtr state)
@@ -50,8 +50,8 @@ public:
{
using TSelf = TPqDataSinkTypeAnnotationTransformer;
AddHandler({TCoCommit::CallableName()}, Hndl(&TSelf::HandleCommit));
- AddHandler({TPqWriteTopic::CallableName() }, Hndl(&TSelf::HandleWriteTopic));
- AddHandler({NNodes::TPqClusterConfig::CallableName() }, Hndl(&TSelf::HandleClusterConfig));
+ AddHandler({TPqWriteTopic::CallableName() }, Hndl(&TSelf::HandleWriteTopic));
+ AddHandler({NNodes::TPqClusterConfig::CallableName() }, Hndl(&TSelf::HandleClusterConfig));
AddHandler({TDqPqTopicSink::CallableName()}, Hndl(&TSelf::HandleDqPqTopicSink));
}
@@ -61,33 +61,33 @@ public:
return TStatus::Ok;
}
- TStatus HandleWriteTopic(TExprBase input, TExprContext& ctx) {
- const auto write = input.Cast<TPqWriteTopic>();
- const auto& writeInput = write.Input().Ref();
- if (!EnsureStructTypeWithSingleStringMember(writeInput.GetTypeAnn(), writeInput.Pos(), ctx)) {
- return TStatus::Error;
- }
-
- input.Ptr()->SetTypeAnn(write.World().Ref().GetTypeAnn());
- return TStatus::Ok;
- }
-
- TStatus HandleClusterConfig(TExprBase input, TExprContext& ctx) {
- const auto config = input.Cast<NNodes::TPqClusterConfig>();
- if (!EnsureAtom(config.Endpoint().Ref(), ctx)) {
- return TStatus::Error;
- }
-
- if (!EnsureAtom(config.TvmId().Ref(), ctx)) {
- return TStatus::Error;
- }
-
- input.Ptr()->SetTypeAnn(ctx.MakeType<TUnitExprType>());
- return TStatus::Ok;
- }
-
+ TStatus HandleWriteTopic(TExprBase input, TExprContext& ctx) {
+ const auto write = input.Cast<TPqWriteTopic>();
+ const auto& writeInput = write.Input().Ref();
+ if (!EnsureStructTypeWithSingleStringMember(writeInput.GetTypeAnn(), writeInput.Pos(), ctx)) {
+ return TStatus::Error;
+ }
+
+ input.Ptr()->SetTypeAnn(write.World().Ref().GetTypeAnn());
+ return TStatus::Ok;
+ }
+
+ TStatus HandleClusterConfig(TExprBase input, TExprContext& ctx) {
+ const auto config = input.Cast<NNodes::TPqClusterConfig>();
+ if (!EnsureAtom(config.Endpoint().Ref(), ctx)) {
+ return TStatus::Error;
+ }
+
+ if (!EnsureAtom(config.TvmId().Ref(), ctx)) {
+ return TStatus::Error;
+ }
+
+ input.Ptr()->SetTypeAnn(ctx.MakeType<TUnitExprType>());
+ return TStatus::Ok;
+ }
+
TStatus HandleDqPqTopicSink(const TExprNode::TPtr& input, TExprContext& ctx) {
- if (!EnsureArgsCount(*input, 3, ctx)) {
+ if (!EnsureArgsCount(*input, 3, ctx)) {
return TStatus::Error;
}
input->SetTypeAnn(ctx.MakeType<TVoidExprType>());
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_datasource.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_datasource.cpp
index 4d43adc769..2e234700d0 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_datasource.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_datasource.cpp
@@ -19,17 +19,17 @@ namespace NYql {
using namespace NNodes;
-class TPqDataSourceProvider : public TDataProviderBase {
+class TPqDataSourceProvider : public TDataProviderBase {
public:
- TPqDataSourceProvider(TPqState::TPtr state, IPqGateway::TPtr gateway)
+ TPqDataSourceProvider(TPqState::TPtr state, IPqGateway::TPtr gateway)
: State_(state)
- , Gateway_(gateway)
+ , Gateway_(gateway)
, ConfigurationTransformer_([this]() {
- return MakeHolder<NCommon::TProviderConfigurationTransformer>(State_->Configuration, *State_->Types, TString{ PqProviderName });
- })
+ return MakeHolder<NCommon::TProviderConfigurationTransformer>(State_->Configuration, *State_->Types, TString{ PqProviderName });
+ })
, LoadMetaDataTransformer_(CreatePqLoadTopicMetadataTransformer(State_))
, TypeAnnotationTransformer_(CreatePqDataSourceTypeAnnotationTransformer(State_))
- , IODiscoveryTransformer_(CreatePqIODiscoveryTransformer(State_)) {
+ , IODiscoveryTransformer_(CreatePqIODiscoveryTransformer(State_)) {
}
TStringBuf GetName() const override {
@@ -43,7 +43,7 @@ public:
const auto& clusterSettings = State_->Configuration->ClustersConfigurationSettings;
if (clusterName != NCommon::ALL_CLUSTERS && !clusterSettings.FindPtr(clusterName)) {
ctx.AddError(TIssue(ctx.GetPosition(node.Child(1)->Pos()), TStringBuilder() <<
- "Unknown cluster name: " << clusterName));
+ "Unknown cluster name: " << clusterName));
return false;
}
cluster = clusterName;
@@ -61,10 +61,10 @@ public:
return TypeAnnotationTransformer_->CanParse(node);
}
- IGraphTransformer& GetIODiscoveryTransformer() override {
- return *IODiscoveryTransformer_;
- }
-
+ IGraphTransformer& GetIODiscoveryTransformer() override {
+ return *IODiscoveryTransformer_;
+ }
+
IGraphTransformer& GetConfigurationTransformer() override {
return *ConfigurationTransformer_;
}
@@ -83,7 +83,7 @@ public:
}
TExprNode::TPtr RewriteIO(const TExprNode::TPtr& node, TExprContext& ctx) override {
- Y_UNUSED(ctx);
+ Y_UNUSED(ctx);
YQL_CLOG(INFO, ProviderPq) << "RewriteIO";
if (auto left = TMaybeNode<TCoLeft>(node)) {
return left.Input().Maybe<TPqRead>().World().Cast().Ptr();
@@ -94,7 +94,7 @@ public:
return MakeIntrusive<TIssue>(ctx.GetPosition(read.Pos()), TStringBuilder() << "At function: " << TCoRead::CallableName());
});
- TTopicKeyParser topicKeyParser(read.FreeArgs().Get(2).Ref(), read.Ref().Child(4), ctx);
+ TTopicKeyParser topicKeyParser(read.FreeArgs().Get(2).Ref(), read.Ref().Child(4), ctx);
const TString cluster(read.DataSource().Cluster().Value());
const auto* topicMeta = State_->FindTopicMeta(cluster, topicKeyParser.GetTopicPath());
if (!topicMeta) {
@@ -106,27 +106,27 @@ public:
.Cluster().Value(cluster).Build()
.Database().Value(State_->Configuration->GetDatabaseForTopic(cluster)).Build()
.Path().Value(topicKeyParser.GetTopicPath()).Build()
- .RowSpec(topicMeta->RowSpec)
+ .RowSpec(topicMeta->RowSpec)
.Props(BuildTopicPropsList(*topicMeta, read.Pos(), ctx))
.Metadata().Build()
.Done();
- auto builder = Build<TPqReadTopic>(ctx, read.Pos())
- .World(read.World())
- .DataSource(read.DataSource())
- .Topic(std::move(topicNode))
- .Format().Value(topicKeyParser.GetFormat()).Build()
- .Compression().Value(topicKeyParser.GetCompression()).Build();
+ auto builder = Build<TPqReadTopic>(ctx, read.Pos())
+ .World(read.World())
+ .DataSource(read.DataSource())
+ .Topic(std::move(topicNode))
+ .Format().Value(topicKeyParser.GetFormat()).Build()
+ .Compression().Value(topicKeyParser.GetCompression()).Build();
- if (topicKeyParser.GetColumnOrder()) {
- builder.Columns(topicKeyParser.GetColumnOrder());
+ if (topicKeyParser.GetColumnOrder()) {
+ builder.Columns(topicKeyParser.GetColumnOrder());
} else {
- builder.Columns<TCoVoid>().Build();
- }
+ builder.Columns<TCoVoid>().Build();
+ }
- return Build<TCoRight>(ctx, read.Pos())
- .Input(builder.Done())
- .Done().Ptr();
+ return Build<TCoRight>(ctx, read.Pos())
+ .Input(builder.Done())
+ .Done().Ptr();
}
const THashMap<TString, TString>* GetClusterTokens() override {
@@ -149,12 +149,12 @@ public:
void GetInputs(const TExprNode& node, TVector<TPinInfo>& inputs) override {
if (auto maybeRead = TMaybeNode<TPqReadTopic>(&node)) {
if (auto maybeTopic = maybeRead.Topic()) {
- TStringBuf cluster;
+ TStringBuf cluster;
if (auto dataSource = maybeRead.DataSource().Maybe<TPqDataSource>()) {
- cluster = dataSource.Cast().Cluster().Value();
+ cluster = dataSource.Cast().Cluster().Value();
}
- auto topicDisplayName = MakeTopicDisplayName(cluster, maybeTopic.Cast().Path().Value());
- inputs.push_back(TPinInfo(maybeRead.DataSource().Raw(), nullptr, maybeTopic.Cast().Raw(), topicDisplayName, false));
+ auto topicDisplayName = MakeTopicDisplayName(cluster, maybeTopic.Cast().Path().Value());
+ inputs.push_back(TPinInfo(maybeRead.DataSource().Raw(), nullptr, maybeTopic.Cast().Raw(), topicDisplayName, false));
}
}
}
@@ -165,15 +165,15 @@ public:
private:
TPqState::TPtr State_;
- IPqGateway::TPtr Gateway_;
+ IPqGateway::TPtr Gateway_;
TLazyInitHolder<IGraphTransformer> ConfigurationTransformer_;
THolder<IGraphTransformer> LoadMetaDataTransformer_;
THolder<TVisitorTransformerBase> TypeAnnotationTransformer_;
- THolder<IGraphTransformer> IODiscoveryTransformer_;
+ THolder<IGraphTransformer> IODiscoveryTransformer_;
};
-TIntrusivePtr<IDataProvider> CreatePqDataSource(TPqState::TPtr state, IPqGateway::TPtr gateway) {
- return new TPqDataSourceProvider(state, gateway);
+TIntrusivePtr<IDataProvider> CreatePqDataSource(TPqState::TPtr state, IPqGateway::TPtr gateway) {
+ return new TPqDataSourceProvider(state, gateway);
}
} // namespace NYql
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_datasource_type_ann.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_datasource_type_ann.cpp
index 1f884336ec..c893c8839c 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_datasource_type_ann.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_datasource_type_ann.cpp
@@ -17,7 +17,7 @@ namespace {
class TPqDataSourceTypeAnnotationTransformer : public TVisitorTransformerBase {
public:
- explicit TPqDataSourceTypeAnnotationTransformer(TPqState::TPtr state)
+ explicit TPqDataSourceTypeAnnotationTransformer(TPqState::TPtr state)
: TVisitorTransformerBase(true)
, State_(state)
{
@@ -45,12 +45,12 @@ public:
return TStatus::Ok;
}
- const TTypeAnnotationNode* GetReadTopicSchema(TPqTopic topic, TMaybeNode<TCoAtomList> columns, TExprBase input, TExprContext& ctx, TVector<TString>& columnOrder) {
+ const TTypeAnnotationNode* GetReadTopicSchema(TPqTopic topic, TMaybeNode<TCoAtomList> columns, TExprBase input, TExprContext& ctx, TVector<TString>& columnOrder) {
auto schema = topic.Ref().GetTypeAnn();
if (columns) {
TVector<const TItemExprType*> items;
items.reserve(columns.Cast().Ref().ChildrenSize());
- columnOrder.reserve(items.capacity());
+ columnOrder.reserve(items.capacity());
auto itemSchema = topic.Ref().GetTypeAnn()->Cast<TListExprType>()->GetItemType()->Cast<TStructExprType>();
for (auto c : columns.Cast().Ref().ChildrenList()) {
@@ -62,7 +62,7 @@ public:
ctx.AddError(TIssue(ctx.GetPosition(input.Pos()), TStringBuilder() << "Unable to find column: " << c->Content()));
return nullptr;
}
- columnOrder.push_back(TString(c->Content()));
+ columnOrder.push_back(TString(c->Content()));
items.push_back(itemSchema->GetItems()[*index]);
}
schema = ctx.MakeType<TListExprType>(ctx.MakeType<TStructExprType>(items));
@@ -71,7 +71,7 @@ public:
}
TStatus HandleReadTopic(TExprBase input, TExprContext& ctx) {
- if (!EnsureMinMaxArgsCount(input.Ref(), 6, 7, ctx)) {
+ if (!EnsureMinMaxArgsCount(input.Ref(), 6, 7, ctx)) {
return TStatus::Error;
}
@@ -90,21 +90,21 @@ public:
return TStatus::Error;
}
- TVector<TString> columnOrder;
- auto schema = GetReadTopicSchema(topic, read.Columns().Maybe<TCoAtomList>(), input, ctx, columnOrder);
+ TVector<TString> columnOrder;
+ auto schema = GetReadTopicSchema(topic, read.Columns().Maybe<TCoAtomList>(), input, ctx, columnOrder);
if (!schema) {
return TStatus::Error;
- }
-
+ }
+
input.Ptr()->SetTypeAnn(ctx.MakeType<TTupleExprType>(TTypeAnnotationNode::TListType{
read.World().Ref().GetTypeAnn(),
- schema
+ schema
}));
- return State_->Types->SetColumnOrder(input.Ref(), columnOrder, ctx);
+ return State_->Types->SetColumnOrder(input.Ref(), columnOrder, ctx);
}
TStatus HandleDqTopicSource(TExprBase input, TExprContext& ctx) {
- if (!EnsureArgsCount(input.Ref(), 4, ctx)) {
+ if (!EnsureArgsCount(input.Ref(), 4, ctx)) {
return TStatus::Error;
}
@@ -115,42 +115,42 @@ public:
return TStatus::Error;
}
- const auto cluster = TString(topic.Cluster().Value());
- const auto topicPath = TString(topic.Path().Value());
- const auto* meta = State_->FindTopicMeta(cluster, topicPath);
- if (!meta) {
- ctx.AddError(TIssue(ctx.GetPosition(input.Pos()), TStringBuilder() << "Unknown topic `" << cluster << "`.`" << topicPath << "`"));
+ const auto cluster = TString(topic.Cluster().Value());
+ const auto topicPath = TString(topic.Path().Value());
+ const auto* meta = State_->FindTopicMeta(cluster, topicPath);
+ if (!meta) {
+ ctx.AddError(TIssue(ctx.GetPosition(input.Pos()), TStringBuilder() << "Unknown topic `" << cluster << "`.`" << topicPath << "`"));
return TStatus::Error;
}
- input.Ptr()->SetTypeAnn(ctx.MakeType<TStreamExprType>(ctx.MakeType<TDataExprType>(EDataSlot::String)));
+ input.Ptr()->SetTypeAnn(ctx.MakeType<TStreamExprType>(ctx.MakeType<TDataExprType>(EDataSlot::String)));
return TStatus::Ok;
}
- TStatus HandleTopic(const TExprNode::TPtr& input, TExprContext& ctx) {
+ TStatus HandleTopic(const TExprNode::TPtr& input, TExprContext& ctx) {
if (State_->IsRtmrMode()) {
- return HandleTopicInRtmrMode(input, ctx);
- }
-
+ return HandleTopicInRtmrMode(input, ctx);
+ }
+
TPqTopic topic(input);
- input->SetTypeAnn(ctx.MakeType<TListExprType>(topic.RowSpec().Ref().GetTypeAnn()->Cast<TTypeExprType>()->GetType()->Cast<TStructExprType>()));
- return TStatus::Ok;
- }
-
-private:
- TStatus HandleTopicInRtmrMode(const TExprNode::TPtr& input, TExprContext& ctx) {
- TVector<const TItemExprType*> items;
- auto stringType = ctx.MakeType<TDataExprType>(EDataSlot::String);
- items.push_back(ctx.MakeType<TItemExprType>("key", stringType));
- items.push_back(ctx.MakeType<TItemExprType>("subkey", stringType));
- items.push_back(ctx.MakeType<TItemExprType>("value", stringType));
- auto itemType = ctx.MakeType<TStructExprType>(items);
-
- input->SetTypeAnn(ctx.MakeType<TListExprType>(itemType));
+ input->SetTypeAnn(ctx.MakeType<TListExprType>(topic.RowSpec().Ref().GetTypeAnn()->Cast<TTypeExprType>()->GetType()->Cast<TStructExprType>()));
return TStatus::Ok;
}
private:
+ TStatus HandleTopicInRtmrMode(const TExprNode::TPtr& input, TExprContext& ctx) {
+ TVector<const TItemExprType*> items;
+ auto stringType = ctx.MakeType<TDataExprType>(EDataSlot::String);
+ items.push_back(ctx.MakeType<TItemExprType>("key", stringType));
+ items.push_back(ctx.MakeType<TItemExprType>("subkey", stringType));
+ items.push_back(ctx.MakeType<TItemExprType>("value", stringType));
+ auto itemType = ctx.MakeType<TStructExprType>(items);
+
+ input->SetTypeAnn(ctx.MakeType<TListExprType>(itemType));
+ return TStatus::Ok;
+ }
+
+private:
TPqState::TPtr State_;
};
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_dq_integration.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_dq_integration.cpp
index ea67ffd422..e7ab82b136 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_dq_integration.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_dq_integration.cpp
@@ -1,5 +1,5 @@
#include "yql_pq_dq_integration.h"
-#include "yql_pq_helpers.h"
+#include "yql_pq_helpers.h"
#include "yql_pq_mkql_compiler.h"
#include <ydb/library/yql/ast/yql_expr.h>
@@ -23,7 +23,7 @@ namespace {
class TPqDqIntegration: public TDqIntegrationBase {
public:
- explicit TPqDqIntegration(const TPqState::TPtr& state)
+ explicit TPqDqIntegration(const TPqState::TPtr& state)
: State_(state.Get())
{
}
@@ -56,9 +56,9 @@ public:
}
ui64 Partition(const TDqSettings&, size_t maxPartitions, const TExprNode& node, TVector<TString>& partitions, TString*, TExprContext&, bool) override {
- if (auto maybePqRead = TMaybeNode<TPqReadTopic>(&node)) {
- return PartitionTopicRead(maybePqRead.Cast().Topic(), maxPartitions, partitions);
- }
+ if (auto maybePqRead = TMaybeNode<TPqReadTopic>(&node)) {
+ return PartitionTopicRead(maybePqRead.Cast().Topic(), maxPartitions, partitions);
+ }
if (auto maybeDqSource = TMaybeNode<TDqSource>(&node)) {
auto settings = maybeDqSource.Cast().Settings();
if (auto topicSource = TMaybeNode<TDqPqTopicSource>(settings.Raw())) {
@@ -69,52 +69,52 @@ public:
}
TExprNode::TPtr WrapRead(const TDqSettings&, const TExprNode::TPtr& read, TExprContext& ctx) override {
- if (const auto& maybePqReadTopic = TMaybeNode<TPqReadTopic>(read)) {
- const auto& pqReadTopic = maybePqReadTopic.Cast();
-
- const auto rowType = pqReadTopic.Ref().GetTypeAnn()->Cast<TTupleExprType>()->GetItems().back()->Cast<TListExprType>()->GetItemType();
- const auto& clusterName = pqReadTopic.DataSource().Cluster().StringValue();
- const auto settings = Build<TCoNameValueTupleList>(ctx, pqReadTopic.Topic().Pos())
- .Add()
- .Name().Value("format").Build()
- .Value(pqReadTopic.Format())
- .Build()
- .Done();
-
- const auto token = "cluster:default_" + clusterName;
- auto columns = pqReadTopic.Columns().Ptr();
- if (!columns->IsList()) {
- const auto pos = columns->Pos();
- const auto& items = rowType->Cast<TStructExprType>()->GetItems();
- TExprNode::TListType cols;
- cols.reserve(items.size());
- std::transform(items.cbegin(), items.cend(), std::back_inserter(cols), [&](const TItemExprType* item) { return ctx.NewAtom(pos, item->GetName()); });
- columns = ctx.NewList(pos, std::move(cols));
- }
-
- return Build<TDqSourceWrap>(ctx, read->Pos())
- .Input<TDqPqTopicSource>()
- .Topic(pqReadTopic.Topic())
- .Columns(std::move(columns))
- .Settings(BuildTopicReadSettings(clusterName, read->Pos(), ctx))
- .Token<TCoSecureParam>()
- .Name().Build(token)
- .Build()
- .Build()
- .RowType(ExpandType(pqReadTopic.Pos(), *rowType, ctx))
- .DataSource(pqReadTopic.DataSource().Cast<TCoDataSource>())
- .Settings(settings)
- .Done().Ptr();
- }
+ if (const auto& maybePqReadTopic = TMaybeNode<TPqReadTopic>(read)) {
+ const auto& pqReadTopic = maybePqReadTopic.Cast();
+
+ const auto rowType = pqReadTopic.Ref().GetTypeAnn()->Cast<TTupleExprType>()->GetItems().back()->Cast<TListExprType>()->GetItemType();
+ const auto& clusterName = pqReadTopic.DataSource().Cluster().StringValue();
+ const auto settings = Build<TCoNameValueTupleList>(ctx, pqReadTopic.Topic().Pos())
+ .Add()
+ .Name().Value("format").Build()
+ .Value(pqReadTopic.Format())
+ .Build()
+ .Done();
+
+ const auto token = "cluster:default_" + clusterName;
+ auto columns = pqReadTopic.Columns().Ptr();
+ if (!columns->IsList()) {
+ const auto pos = columns->Pos();
+ const auto& items = rowType->Cast<TStructExprType>()->GetItems();
+ TExprNode::TListType cols;
+ cols.reserve(items.size());
+ std::transform(items.cbegin(), items.cend(), std::back_inserter(cols), [&](const TItemExprType* item) { return ctx.NewAtom(pos, item->GetName()); });
+ columns = ctx.NewList(pos, std::move(cols));
+ }
+
+ return Build<TDqSourceWrap>(ctx, read->Pos())
+ .Input<TDqPqTopicSource>()
+ .Topic(pqReadTopic.Topic())
+ .Columns(std::move(columns))
+ .Settings(BuildTopicReadSettings(clusterName, read->Pos(), ctx))
+ .Token<TCoSecureParam>()
+ .Name().Build(token)
+ .Build()
+ .Build()
+ .RowType(ExpandType(pqReadTopic.Pos(), *rowType, ctx))
+ .DataSource(pqReadTopic.DataSource().Cast<TCoDataSource>())
+ .Settings(settings)
+ .Done().Ptr();
+ }
return read;
}
TMaybe<bool> CanWrite(const TDqSettings&, const TExprNode&, TExprContext&) override {
- YQL_ENSURE(false, "Unimplemented");
+ YQL_ENSURE(false, "Unimplemented");
}
void RegisterMkqlCompiler(NCommon::TMkqlCallableCompilerBase& compiler) override {
- RegisterDqPqMkqlCompilers(compiler);
+ RegisterDqPqMkqlCompilers(compiler);
}
static TStringBuf Name(const TCoNameValueTuple& nameValue) {
@@ -127,17 +127,17 @@ public:
YQL_ENSURE(value.IsAtom());
return value.Content();
}
-
- return {};
+
+ return {};
}
static NPq::NProto::EClusterType ToClusterType(NYql::TPqClusterConfig::EClusterType t) {
switch (t) {
- case NYql::TPqClusterConfig::CT_UNSPECIFIED:
+ case NYql::TPqClusterConfig::CT_UNSPECIFIED:
return NPq::NProto::Unspecified;
- case NYql::TPqClusterConfig::CT_PERS_QUEUE:
+ case NYql::TPqClusterConfig::CT_PERS_QUEUE:
return NPq::NProto::PersQueue;
- case NYql::TPqClusterConfig::CT_DATA_STREAMS:
+ case NYql::TPqClusterConfig::CT_DATA_STREAMS:
return NPq::NProto::DataStreams;
}
}
@@ -168,12 +168,12 @@ public:
srcDesc.SetEndpoint(TString(Value(setting)));
} else if (name == UseSslSetting) {
srcDesc.SetUseSsl(FromString<bool>(Value(setting)));
- } else if (name == AddBearerToTokenSetting) {
- srcDesc.SetAddBearerToToken(FromString<bool>(Value(setting)));
+ } else if (name == AddBearerToTokenSetting) {
+ srcDesc.SetAddBearerToToken(FromString<bool>(Value(setting)));
}
}
- if (auto maybeToken = TMaybeNode<TCoSecureParam>(topicSource.Token().Raw())) {
+ if (auto maybeToken = TMaybeNode<TCoSecureParam>(topicSource.Token().Raw())) {
srcDesc.MutableToken()->SetName(TString(maybeToken.Cast().Name().Value()));
}
@@ -210,12 +210,12 @@ public:
sinkDesc.SetEndpoint(TString(Value(setting)));
} else if (name == UseSslSetting) {
sinkDesc.SetUseSsl(FromString<bool>(Value(setting)));
- } else if (name == AddBearerToTokenSetting) {
- sinkDesc.SetAddBearerToToken(FromString<bool>(Value(setting)));
+ } else if (name == AddBearerToTokenSetting) {
+ sinkDesc.SetAddBearerToToken(FromString<bool>(Value(setting)));
}
}
- if (auto maybeToken = TMaybeNode<TCoSecureParam>(topicSink.Token().Raw())) {
+ if (auto maybeToken = TMaybeNode<TCoSecureParam>(topicSink.Token().Raw())) {
sinkDesc.MutableToken()->SetName(TString(maybeToken.Cast().Name().Value()));
}
@@ -225,35 +225,35 @@ public:
}
}
- NNodes::TCoNameValueTupleList BuildTopicReadSettings(const TString& cluster, TPositionHandle pos, TExprContext& ctx) const {
- TVector<TCoNameValueTuple> props;
-
- {
- TMaybe<TString> consumer = State_->Configuration->Consumer.Get();
+ NNodes::TCoNameValueTupleList BuildTopicReadSettings(const TString& cluster, TPositionHandle pos, TExprContext& ctx) const {
+ TVector<TCoNameValueTuple> props;
+
+ {
+ TMaybe<TString> consumer = State_->Configuration->Consumer.Get();
if (consumer) {
Add(props, ConsumerSetting, *consumer, pos, ctx);
- }
- }
-
- auto clusterConfiguration = State_->Configuration->ClustersConfigurationSettings.FindPtr(cluster);
- if (!clusterConfiguration) {
- ythrow yexception() << "Unknown pq cluster \"" << cluster << "\"";
- }
-
- Add(props, EndpointSetting, clusterConfiguration->Endpoint, pos, ctx);
- if (clusterConfiguration->UseSsl) {
- Add(props, UseSslSetting, "1", pos, ctx);
- }
-
- if (clusterConfiguration->AddBearerToToken) {
- Add(props, AddBearerToTokenSetting, "1", pos, ctx);
- }
-
- return Build<TCoNameValueTupleList>(ctx, pos)
- .Add(props)
- .Done();
- }
-
+ }
+ }
+
+ auto clusterConfiguration = State_->Configuration->ClustersConfigurationSettings.FindPtr(cluster);
+ if (!clusterConfiguration) {
+ ythrow yexception() << "Unknown pq cluster \"" << cluster << "\"";
+ }
+
+ Add(props, EndpointSetting, clusterConfiguration->Endpoint, pos, ctx);
+ if (clusterConfiguration->UseSsl) {
+ Add(props, UseSslSetting, "1", pos, ctx);
+ }
+
+ if (clusterConfiguration->AddBearerToToken) {
+ Add(props, AddBearerToTokenSetting, "1", pos, ctx);
+ }
+
+ return Build<TCoNameValueTupleList>(ctx, pos)
+ .Add(props)
+ .Done();
+ }
+
private:
TPqState* State_; // State owns dq integration, so back reference must be not smart.
};
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_gateway.h b/ydb/library/yql/providers/pq/provider/yql_pq_gateway.h
index 118b37c012..7f6c422005 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_gateway.h
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_gateway.h
@@ -12,11 +12,11 @@ namespace NYql {
struct IPqGateway : public TThrRefBase {
using TPtr = TIntrusivePtr<IPqGateway>;
- virtual NThreading::TFuture<void> OpenSession(const TString& sessionId, const TString& username) = 0;
+ virtual NThreading::TFuture<void> OpenSession(const TString& sessionId, const TString& username) = 0;
virtual void CloseSession(const TString& sessionId) = 0;
// CM API.
- virtual ::NPq::NConfigurationManager::TAsyncDescribePathResult DescribePath(const TString& sessionId, const TString& cluster, const TString& database, const TString& path, const TString& token) = 0;
+ virtual ::NPq::NConfigurationManager::TAsyncDescribePathResult DescribePath(const TString& sessionId, const TString& cluster, const TString& database, const TString& path, const TString& token) = 0;
virtual void UpdateClusterConfigs(
const TString& clusterName,
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_io_discovery.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_io_discovery.cpp
index f2e347cf73..b84c68edff 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_io_discovery.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_io_discovery.cpp
@@ -1,29 +1,29 @@
-#include "yql_pq_provider_impl.h"
+#include "yql_pq_provider_impl.h"
#include "yql_pq_helpers.h"
-
+
#include <ydb/library/yql/core/yql_expr_optimize.h>
#include <ydb/library/yql/utils/log/log.h>
#include <ydb/library/yql/providers/pq/expr_nodes/yql_pq_expr_nodes.h>
-
-namespace NYql {
-
-namespace {
-
-using namespace NNodes;
-
-class TPqIODiscoveryTransformer : public TGraphTransformerBase {
+
+namespace NYql {
+
+namespace {
+
+using namespace NNodes;
+
+class TPqIODiscoveryTransformer : public TGraphTransformerBase {
using TDbId2Endpoint = THashMap<std::pair<TString, NYq::DatabaseType>, NYq::TEvents::TEvEndpointResponse::TEndpoint>;
-public:
- explicit TPqIODiscoveryTransformer(TPqState::TPtr state)
- : State_(state)
- {
- }
-
- TStatus DoTransform(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext& ctx) final {
- Y_UNUSED(ctx);
- output = input;
+public:
+ explicit TPqIODiscoveryTransformer(TPqState::TPtr state)
+ : State_(state)
+ {
+ }
+
+ TStatus DoTransform(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext& ctx) final {
+ Y_UNUSED(ctx);
+ output = input;
if (ctx.Step.IsDone(TExprStep::DiscoveryIO))
return TStatus::Ok;
@@ -40,32 +40,32 @@ public:
*resolvedIds_ = future.GetValue();
});
return TStatus::Async;
- }
-
- NThreading::TFuture<void> DoGetAsyncFuture(const TExprNode&) final {
+ }
+
+ NThreading::TFuture<void> DoGetAsyncFuture(const TExprNode&) final {
return AsyncFuture_;
- }
-
- TStatus DoApplyAsyncChanges(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext&) final {
- output = input;
+ }
+
+ TStatus DoApplyAsyncChanges(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext&) final {
+ output = input;
AsyncFuture_.GetValue();
FullResolvedIds_.insert(ResolvedIds_->begin(), ResolvedIds_->end());
ResolvedIds_->clear();
FillSettingsWithResolvedYdsIds(State_, FullResolvedIds_);
- return TStatus::Ok;
- }
-
-private:
- const TPqState::TPtr State_;
+ return TStatus::Ok;
+ }
+
+private:
+ const TPqState::TPtr State_;
NThreading::TFuture<void> AsyncFuture_;
TDbId2Endpoint FullResolvedIds_;
std::shared_ptr<TDbId2Endpoint> ResolvedIds_ = std::make_shared<TDbId2Endpoint>();
-};
-
-}
-
-THolder<IGraphTransformer> CreatePqIODiscoveryTransformer(TPqState::TPtr state) {
- return THolder(new TPqIODiscoveryTransformer(state));
-}
-
-}
+};
+
+}
+
+THolder<IGraphTransformer> CreatePqIODiscoveryTransformer(TPqState::TPtr state) {
+ return THolder(new TPqIODiscoveryTransformer(state));
+}
+
+}
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_load_meta.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_load_meta.cpp
index 51f2a1ce17..28c87e5ff8 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_load_meta.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_load_meta.cpp
@@ -19,23 +19,23 @@ namespace {
class TPqLoadTopicMetadataTransformer : public TGraphTransformerBase {
public:
- explicit TPqLoadTopicMetadataTransformer(TPqState::TPtr state)
+ explicit TPqLoadTopicMetadataTransformer(TPqState::TPtr state)
: State_(std::move(state))
{}
- void AddToPendingTopics(const TString& cluster, const TString& topicPath, TPositionHandle pos, TExprNode::TPtr rowSpec, TExprNode::TPtr columnOrder) {
+ void AddToPendingTopics(const TString& cluster, const TString& topicPath, TPositionHandle pos, TExprNode::TPtr rowSpec, TExprNode::TPtr columnOrder) {
const auto topicKey = std::make_pair(cluster, topicPath);
const auto found = State_->Topics.FindPtr(topicKey);
- if (found) {
- return;
+ if (found) {
+ return;
}
-
- YQL_CLOG(INFO, ProviderPq) << "Load topic meta for: `" << cluster << "`.`" << topicPath << "`";
- TPqState::TTopicMeta m;
- m.Pos = pos;
- m.RowSpec = rowSpec;
- m.ColumnOrder = columnOrder;
- PendingTopics_.emplace(topicKey, m);
+
+ YQL_CLOG(INFO, ProviderPq) << "Load topic meta for: `" << cluster << "`.`" << topicPath << "`";
+ TPqState::TTopicMeta m;
+ m.Pos = pos;
+ m.RowSpec = rowSpec;
+ m.ColumnOrder = columnOrder;
+ PendingTopics_.emplace(topicKey, m);
}
TStatus DoTransform(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext& ctx) final {
@@ -48,32 +48,32 @@ public:
VisitExpr(input, [&](const TExprNode::TPtr& node) {
if (auto maybePqRead = TMaybeNode<TPqRead>(node)) {
TPqRead read = maybePqRead.Cast();
- if (read.DataSource().Category().Value() != PqProviderName) {
- return true;
+ if (read.DataSource().Category().Value() != PqProviderName) {
+ return true;
}
-
- TTopicKeyParser topicParser(read.Arg(2).Ref(), read.Ref().Child(4), ctx);
- AddToPendingTopics(read.DataSource().Cluster().StringValue(), topicParser.GetTopicPath(), node->Pos(), topicParser.GetUserSchema(), topicParser.GetColumnOrder());
+
+ TTopicKeyParser topicParser(read.Arg(2).Ref(), read.Ref().Child(4), ctx);
+ AddToPendingTopics(read.DataSource().Cluster().StringValue(), topicParser.GetTopicPath(), node->Pos(), topicParser.GetUserSchema(), topicParser.GetColumnOrder());
} else if (auto maybePqWrite = TMaybeNode<TPqWrite>(node)) {
TPqWrite write = maybePqWrite.Cast();
if (write.DataSink().Category().Value() == PqProviderName) {
- TTopicKeyParser topicParser(write.Arg(2).Ref(), nullptr, ctx);
- AddToPendingTopics(write.DataSink().Cluster().StringValue(), topicParser.GetTopicPath(), node->Pos(), {}, {});
+ TTopicKeyParser topicParser(write.Arg(2).Ref(), nullptr, ctx);
+ AddToPendingTopics(write.DataSink().Cluster().StringValue(), topicParser.GetTopicPath(), node->Pos(), {}, {});
}
}
return true;
});
- for (auto& [x, meta] : PendingTopics_) {
- auto itemType = LoadTopicMeta(x.first, x.second, ctx, meta);
- if (!itemType) {
+ for (auto& [x, meta] : PendingTopics_) {
+ auto itemType = LoadTopicMeta(x.first, x.second, ctx, meta);
+ if (!itemType) {
return TStatus::Error;
}
- meta.RawFormat = (meta.RowSpec == nullptr);
- if (!meta.RowSpec) {
- meta.RowSpec = ExpandType(meta.Pos, *itemType, ctx);
- }
+ meta.RawFormat = (meta.RowSpec == nullptr);
+ if (!meta.RowSpec) {
+ meta.RowSpec = ExpandType(meta.Pos, *itemType, ctx);
+ }
State_->Topics.emplace(x, meta);
}
@@ -94,7 +94,7 @@ public:
}
private:
- static const TStructExprType* CreateDefaultItemType(TExprContext& ctx) {
+ static const TStructExprType* CreateDefaultItemType(TExprContext& ctx) {
// Schema for topic:
// {
// Data:String
@@ -111,29 +111,29 @@ private:
return ctx.MakeType<TStructExprType>(items);
}
- const TStructExprType* LoadTopicMeta(const TString& cluster, const TString& topic, TExprContext& ctx, TPqState::TTopicMeta& meta) {
- // todo: return TFuture
- try {
- auto future = State_->Gateway->DescribePath(State_->SessionId, cluster, State_->Configuration->GetDatabaseForTopic(cluster), topic, State_->Configuration->Tokens.at(cluster));
- NPq::NConfigurationManager::TDescribePathResult description = future.GetValueSync();
- if (!description.IsTopic()) {
- ctx.IssueManager.RaiseIssue(TIssue{TStringBuilder() << "Path '" << topic << "' is not a topic"});
- return {};
- }
- meta.Description = description.GetTopicDescription();
- return CreateDefaultItemType(ctx);
+ const TStructExprType* LoadTopicMeta(const TString& cluster, const TString& topic, TExprContext& ctx, TPqState::TTopicMeta& meta) {
+ // todo: return TFuture
+ try {
+ auto future = State_->Gateway->DescribePath(State_->SessionId, cluster, State_->Configuration->GetDatabaseForTopic(cluster), topic, State_->Configuration->Tokens.at(cluster));
+ NPq::NConfigurationManager::TDescribePathResult description = future.GetValueSync();
+ if (!description.IsTopic()) {
+ ctx.IssueManager.RaiseIssue(TIssue{TStringBuilder() << "Path '" << topic << "' is not a topic"});
+ return {};
+ }
+ meta.Description = description.GetTopicDescription();
+ return CreateDefaultItemType(ctx);
} catch (const std::exception& ex) {
TIssues issues;
issues.AddIssue(ex.what());
ctx.IssueManager.AddIssues(issues);
- return nullptr;
- }
- }
-
+ return nullptr;
+ }
+ }
+
private:
TPqState::TPtr State_;
- // (cluster, topic) -> meta
- THashMap<std::pair<TString, TString>, TPqState::TTopicMeta> PendingTopics_;
+ // (cluster, topic) -> meta
+ THashMap<std::pair<TString, TString>, TPqState::TTopicMeta> PendingTopics_;
NThreading::TFuture<void> AsyncFuture_;
};
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_logical_opt.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_logical_opt.cpp
index 6e8a6462d9..665dcf08bf 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_logical_opt.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_logical_opt.cpp
@@ -24,8 +24,8 @@ public:
{
#define HNDL(name) "LogicalOptimizer-"#name, Hndl(&TPqLogicalOptProposalTransformer::name)
AddHandler(0, &TCoLeft::Match, HNDL(TrimReadWorld));
- // AddHandler(0, &TCoExtractMembers::Match, HNDL(ExtractMembers));
- // AddHandler(0, &TCoExtractMembers::Match, HNDL(ExtractMembersOverDqWrap));
+ // AddHandler(0, &TCoExtractMembers::Match, HNDL(ExtractMembers));
+ // AddHandler(0, &TCoExtractMembers::Match, HNDL(ExtractMembersOverDqWrap));
#undef HNDL
}
@@ -37,7 +37,7 @@ public:
return TExprBase(ctx.NewWorld(node.Pos()));
}
- /*
+ /*
TMaybeNode<TExprBase> ExtractMembers(TExprBase node, TExprContext& ctx) const {
const auto& extract = node.Cast<TCoExtractMembers>();
const auto& input = extract.Input();
@@ -73,7 +73,7 @@ public:
.Columns(extract.Members())
.Build()
.Done();
- }*/
+ }*/
private:
TPqState::TPtr State_;
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.cpp
index 8886ddb83e..b4f4a39e8d 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.cpp
@@ -9,25 +9,25 @@ namespace NYql {
using namespace NKikimr::NMiniKQL;
using namespace NNodes;
-void RegisterDqPqMkqlCompilers(NCommon::TMkqlCallableCompilerBase& compiler) {
- compiler.ChainCallable(TDqSourceWideWrap::CallableName(),
- [](const TExprNode& node, NCommon::TMkqlBuildContext& ctx) {
- if (const auto wrapper = TDqSourceWideWrap(&node); wrapper.DataSource().Category().Value() == PqProviderName) {
+void RegisterDqPqMkqlCompilers(NCommon::TMkqlCallableCompilerBase& compiler) {
+ compiler.ChainCallable(TDqSourceWideWrap::CallableName(),
+ [](const TExprNode& node, NCommon::TMkqlBuildContext& ctx) {
+ if (const auto wrapper = TDqSourceWideWrap(&node); wrapper.DataSource().Category().Value() == PqProviderName) {
const auto wrapped = TryWrapWithParser(wrapper, ctx);
if (wrapped) {
return *wrapped;
- }
-
+ }
+
const auto input = MkqlBuildExpr(wrapper.Input().Ref(), ctx);
- auto flow = ctx.ProgramBuilder.ToFlow(input);
- return ctx.ProgramBuilder.ExpandMap(flow,
+ auto flow = ctx.ProgramBuilder.ToFlow(input);
+ return ctx.ProgramBuilder.ExpandMap(flow,
[&](TRuntimeNode item) -> TRuntimeNode::TList {
return {item};
});
- }
-
- return TRuntimeNode();
- });
-}
-
-}
+ }
+
+ return TRuntimeNode();
+ });
+}
+
+}
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.h b/ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.h
index 5cebebcca7..8545bfb53e 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.h
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_mkql_compiler.h
@@ -6,6 +6,6 @@
namespace NYql {
-void RegisterDqPqMkqlCompilers(NCommon::TMkqlCallableCompilerBase& compiler);
+void RegisterDqPqMkqlCompilers(NCommon::TMkqlCallableCompilerBase& compiler);
}
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_physical_optimize.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_physical_optimize.cpp
index a9351eb654..60acbce848 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_physical_optimize.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_physical_optimize.cpp
@@ -35,20 +35,20 @@ public:
NNodes::TCoNameValueTupleList BuildTopicWriteSettings(const TString& cluster, TPositionHandle pos, TExprContext& ctx) const {
TVector<TCoNameValueTuple> props;
- auto clusterConfiguration = State_->Configuration->ClustersConfigurationSettings.FindPtr(cluster);
- if (!clusterConfiguration) {
+ auto clusterConfiguration = State_->Configuration->ClustersConfigurationSettings.FindPtr(cluster);
+ if (!clusterConfiguration) {
ythrow yexception() << "Unknown pq cluster \"" << cluster << "\"";
}
- Add(props, EndpointSetting, clusterConfiguration->Endpoint, pos, ctx);
- if (clusterConfiguration->UseSsl) {
+ Add(props, EndpointSetting, clusterConfiguration->Endpoint, pos, ctx);
+ if (clusterConfiguration->UseSsl) {
Add(props, UseSslSetting, "1", pos, ctx);
}
- if (clusterConfiguration->AddBearerToToken) {
- Add(props, AddBearerToTokenSetting, "1", pos, ctx);
- }
-
+ if (clusterConfiguration->AddBearerToToken) {
+ Add(props, AddBearerToTokenSetting, "1", pos, ctx);
+ }
+
return Build<TCoNameValueTupleList>(ctx, pos)
.Add(props)
.Done();
@@ -69,11 +69,11 @@ public:
return node;
}
- const auto* topicMeta = State_->FindTopicMeta(topicNode);
- if (!topicMeta) {
- ctx.AddError(TIssue(ctx.GetPosition(write.Pos()), TStringBuilder() << "Unknown topic `" << topicNode.Cluster().StringValue() << "`.`"
- << topicNode.Path().StringValue() << "`"));
- return nullptr;
+ const auto* topicMeta = State_->FindTopicMeta(topicNode);
+ if (!topicMeta) {
+ ctx.AddError(TIssue(ctx.GetPosition(write.Pos()), TStringBuilder() << "Unknown topic `" << topicNode.Cluster().StringValue() << "`.`"
+ << topicNode.Path().StringValue() << "`"));
+ return nullptr;
}
YQL_CLOG(INFO, ProviderPq) << "Optimize PqWriteTopic `" << topicNode.Cluster().StringValue() << "`.`" << topicNode.Path().StringValue() << "`";
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_provider.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_provider.cpp
index b3f700c147..43415cb311 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_provider.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_provider.cpp
@@ -30,7 +30,7 @@ TDataProviderInitializer GetPqDataProviderInitializer(
Y_UNUSED(operationOptions);
auto state = MakeIntrusive<TPqState>(sessionId);
- state->SupportRtmrMode = supportRtmrMode;
+ state->SupportRtmrMode = supportRtmrMode;
state->Types = typeCtx.Get();
state->FunctionRegistry = functionRegistry;
state->DbResolver = dbResolverWithMeta;
@@ -43,10 +43,10 @@ TDataProviderInitializer GetPqDataProviderInitializer(
TDataProviderInfo info;
info.Names.insert({TString{PqProviderName}});
- info.Source = CreatePqDataSource(state, gateway);
- info.Sink = CreatePqDataSink(state, gateway);
+ info.Source = CreatePqDataSource(state, gateway);
+ info.Sink = CreatePqDataSink(state, gateway);
- info.OpenSession = [gateway](const TString& sessionId, const TString& username,
+ info.OpenSession = [gateway](const TString& sessionId, const TString& username,
const TOperationProgressWriter& progressWriter, const TYqlOperationOptions& operationOptions,
TIntrusivePtr<IRandomProvider> randomProvider, TIntrusivePtr<ITimeProvider> timeProvider) {
Y_UNUSED(progressWriter);
@@ -54,7 +54,7 @@ TDataProviderInitializer GetPqDataProviderInitializer(
Y_UNUSED(randomProvider);
Y_UNUSED(timeProvider);
- return gateway->OpenSession(sessionId, username);
+ return gateway->OpenSession(sessionId, username);
};
info.CloseSession = [gateway](const TString& sessionId) {
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_provider.h b/ydb/library/yql/providers/pq/provider/yql_pq_provider.h
index a890e32b69..e2fdd051d7 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_provider.h
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_provider.h
@@ -17,10 +17,10 @@ struct TPqState : public TThrRefBase {
using TPtr = TIntrusivePtr<TPqState>;
struct TTopicMeta {
- TPositionHandle Pos;
- bool RawFormat = true;
- TExprNode::TPtr RowSpec;
- TExprNode::TPtr ColumnOrder;
+ TPositionHandle Pos;
+ bool RawFormat = true;
+ TExprNode::TPtr RowSpec;
+ TExprNode::TPtr ColumnOrder;
TMaybe<::NPq::NConfigurationManager::TTopicDescription> Description;
};
@@ -42,11 +42,11 @@ public:
return Configuration->PqReadByRtmrCluster_.Get() != "dq";
}
-public:
- bool SupportRtmrMode = false;
- const TString SessionId;
- THashMap<std::pair<TString, TString>, TTopicMeta> Topics;
-
+public:
+ bool SupportRtmrMode = false;
+ const TString SessionId;
+ THashMap<std::pair<TString, TString>, TTopicMeta> Topics;
+
TTypeAnnotationContext* Types = nullptr;
TPqConfiguration::TPtr Configuration = MakeIntrusive<TPqConfiguration>();
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry = nullptr;
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.cpp
index ed8c90156d..a335abaf45 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.cpp
@@ -1,9 +1,9 @@
-#include "yql_pq_provider_impl.h"
-
-namespace NYql {
-
-TString MakeTopicDisplayName(TStringBuf cluster, TStringBuf path) {
- return TString::Join(cluster, ".`", path, "`");
-}
-
-} // namespace NYql
+#include "yql_pq_provider_impl.h"
+
+namespace NYql {
+
+TString MakeTopicDisplayName(TStringBuf cluster, TStringBuf path) {
+ return TString::Join(cluster, ".`", path, "`");
+}
+
+} // namespace NYql
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.h b/ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.h
index 619eb468e2..d66857ab17 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.h
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_provider_impl.h
@@ -10,8 +10,8 @@
namespace NYql {
-TIntrusivePtr<IDataProvider> CreatePqDataSource(TPqState::TPtr state, IPqGateway::TPtr gateway);
-TIntrusivePtr<IDataProvider> CreatePqDataSink(TPqState::TPtr state, IPqGateway::TPtr gateway);
+TIntrusivePtr<IDataProvider> CreatePqDataSource(TPqState::TPtr state, IPqGateway::TPtr gateway);
+TIntrusivePtr<IDataProvider> CreatePqDataSink(TPqState::TPtr state, IPqGateway::TPtr gateway);
THolder<IGraphTransformer> CreatePqLoadTopicMetadataTransformer(TPqState::TPtr state);
@@ -25,8 +25,8 @@ THolder<IGraphTransformer> CreatePqLogicalOptProposalTransformer(TPqState::TPtr
THolder<IGraphTransformer> CreatePqPhysicalOptProposalTransformer(TPqState::TPtr state);
-THolder<IGraphTransformer> CreatePqIODiscoveryTransformer(TPqState::TPtr state);
-
-TString MakeTopicDisplayName(TStringBuf cluster, TStringBuf path);
-
+THolder<IGraphTransformer> CreatePqIODiscoveryTransformer(TPqState::TPtr state);
+
+TString MakeTopicDisplayName(TStringBuf cluster, TStringBuf path);
+
} // namespace NYql
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_settings.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_settings.cpp
index 278db980f4..60609bd2d4 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_settings.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_settings.cpp
@@ -7,7 +7,7 @@ using namespace NCommon;
TPqConfiguration::TPqConfiguration() {
REGISTER_SETTING(*this, Consumer);
REGISTER_SETTING(*this, Database);
- REGISTER_SETTING(*this, PqReadByRtmrCluster_);
+ REGISTER_SETTING(*this, PqReadByRtmrCluster_);
}
TPqSettings::TConstPtr TPqConfiguration::Snapshot() const {
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_settings.h b/ydb/library/yql/providers/pq/provider/yql_pq_settings.h
index 5ed40d07d9..ca1c7ffdb6 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_settings.h
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_settings.h
@@ -1,5 +1,5 @@
#pragma once
-
+
#include <ydb/library/yql/utils/log/log.h>
#include <ydb/library/yql/providers/common/structured_token/yql_token_builder.h>
#include <ydb/library/yql/providers/common/config/yql_dispatch.h>
@@ -17,20 +17,20 @@ struct TPqSettings {
NCommon::TConfSetting<TString, false> Consumer;
NCommon::TConfSetting<TString, false> Database; // It is needed in case of Cloud.LB for external users, but can be taken from config for internal LB.
- NCommon::TConfSetting<TString, false> PqReadByRtmrCluster_;
+ NCommon::TConfSetting<TString, false> PqReadByRtmrCluster_;
};
struct TPqClusterConfigurationSettings {
TString ClusterName;
- NYql::TPqClusterConfig::EClusterType ClusterType = NYql::TPqClusterConfig::CT_UNSPECIFIED;
+ NYql::TPqClusterConfig::EClusterType ClusterType = NYql::TPqClusterConfig::CT_UNSPECIFIED;
TString Endpoint;
TString ConfigManagerEndpoint;
- bool UseSsl = false;
+ bool UseSsl = false;
TString Database;
TString DatabaseId;
ui32 TvmId = 0;
- TString AuthToken;
- bool AddBearerToToken = false;
+ TString AuthToken;
+ bool AddBearerToToken = false;
};
struct TPqConfiguration : public TPqSettings, public NCommon::TSettingDispatcher {
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp
index 2b99e52484..a20c9f6adf 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp
@@ -4,40 +4,40 @@
namespace NYql {
-namespace {
-std::pair<TExprNode::TPtr, TExprNode::TPtr> GetSchema(const TExprNode& settings) {
- for (auto i = 0U; i < settings.ChildrenSize(); ++i) {
- if (settings.Child(i)->Head().IsAtom("userschema")) {
- return { settings.Child(i)->ChildPtr(1), settings.Child(i)->ChildrenSize() > 2 ? settings.Child(i)->TailPtr() : TExprNode::TPtr() };
- }
- }
-
- return {};
-}
+namespace {
+std::pair<TExprNode::TPtr, TExprNode::TPtr> GetSchema(const TExprNode& settings) {
+ for (auto i = 0U; i < settings.ChildrenSize(); ++i) {
+ if (settings.Child(i)->Head().IsAtom("userschema")) {
+ return { settings.Child(i)->ChildPtr(1), settings.Child(i)->ChildrenSize() > 2 ? settings.Child(i)->TailPtr() : TExprNode::TPtr() };
+ }
+ }
+
+ return {};
}
+}
-TTopicKeyParser::TTopicKeyParser(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx) {
- YQL_ENSURE(Parse(expr, readSettings, ctx), "Failed to parse topic info");
-}
-
-bool TTopicKeyParser::Parse(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx) {
- if (expr.IsCallable("MrTableConcat")) {
- return TryParseKey(expr.Head(), ctx);
+TTopicKeyParser::TTopicKeyParser(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx) {
+ YQL_ENSURE(Parse(expr, readSettings, ctx), "Failed to parse topic info");
+}
+
+bool TTopicKeyParser::Parse(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx) {
+ if (expr.IsCallable("MrTableConcat")) {
+ return TryParseKey(expr.Head(), ctx);
}
-
- if (expr.IsCallable(NNodes::TCoKey::CallableName())) {
- return TryParseKey(expr, ctx);
- }
-
- if (readSettings && expr.IsCallable("MrObject")) {
- return TryParseObject(expr, readSettings);
- }
- ctx.AddError(TIssue(ctx.GetPosition(expr.Pos()), "Expected MrTableConcat or Key or MrObject"));
- return false;
+
+ if (expr.IsCallable(NNodes::TCoKey::CallableName())) {
+ return TryParseKey(expr, ctx);
+ }
+
+ if (readSettings && expr.IsCallable("MrObject")) {
+ return TryParseObject(expr, readSettings);
+ }
+ ctx.AddError(TIssue(ctx.GetPosition(expr.Pos()), "Expected MrTableConcat or Key or MrObject"));
+ return false;
}
-bool TTopicKeyParser::TryParseKey(const TExprNode& expr, TExprContext& ctx) {
- const auto maybeKey = NNodes::TExprBase(&expr).Maybe<NNodes::TCoKey>();
+bool TTopicKeyParser::TryParseKey(const TExprNode& expr, TExprContext& ctx) {
+ const auto maybeKey = NNodes::TExprBase(&expr).Maybe<NNodes::TCoKey>();
if (!maybeKey) {
ctx.AddError(TIssue(ctx.GetPosition(expr.Pos()), "Expected Key"));
return false;
@@ -54,11 +54,11 @@ bool TTopicKeyParser::TryParseKey(const TExprNode& expr, TExprContext& ctx) {
return true;
}
-bool TTopicKeyParser::TryParseObject(const TExprNode& expr, TExprNode::TPtr readSettings) {
- std::tie(UserSchema, ColumnOrder) = GetSchema(*readSettings);
- TopicPath = TString(expr.Child(0)->Content());
- Format = TString(expr.Child(1)->Content());
- Compression = TString(expr.Child(2)->Content());
- return true;
-}
+bool TTopicKeyParser::TryParseObject(const TExprNode& expr, TExprNode::TPtr readSettings) {
+ std::tie(UserSchema, ColumnOrder) = GetSchema(*readSettings);
+ TopicPath = TString(expr.Child(0)->Content());
+ Format = TString(expr.Child(1)->Content());
+ Compression = TString(expr.Child(2)->Content());
+ return true;
+}
} // namespace NYql
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.h b/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.h
index b22f61125f..a22e42caf1 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.h
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.h
@@ -7,41 +7,41 @@ namespace NYql {
class TTopicKeyParser {
public:
- TTopicKeyParser() {}
- TTopicKeyParser(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx);
+ TTopicKeyParser() {}
+ TTopicKeyParser(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx);
const TString& GetTopicPath() const {
return TopicPath;
}
- TExprNode::TPtr GetUserSchema() const {
- return UserSchema;
- }
-
- TExprNode::TPtr GetColumnOrder() const {
- return ColumnOrder;
- }
-
- const TString& GetFormat() const {
- return Format;
- }
-
- const TString& GetCompression() const {
- return Compression;
- }
-
- bool Parse(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx);
-
+ TExprNode::TPtr GetUserSchema() const {
+ return UserSchema;
+ }
+
+ TExprNode::TPtr GetColumnOrder() const {
+ return ColumnOrder;
+ }
+
+ const TString& GetFormat() const {
+ return Format;
+ }
+
+ const TString& GetCompression() const {
+ return Compression;
+ }
+
+ bool Parse(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx);
+
private:
- bool TryParseKey(const TExprNode& expr, TExprContext& ctx);
- bool TryParseObject(const TExprNode& expr, TExprNode::TPtr readSettings);
+ bool TryParseKey(const TExprNode& expr, TExprContext& ctx);
+ bool TryParseObject(const TExprNode& expr, TExprNode::TPtr readSettings);
private:
TString TopicPath;
- TString Format;
- TString Compression;
- TExprNode::TPtr UserSchema;
- TExprNode::TPtr ColumnOrder;
+ TString Format;
+ TString Compression;
+ TExprNode::TPtr UserSchema;
+ TExprNode::TPtr ColumnOrder;
};
} // namespace NYql
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_ut.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_ut.cpp
index 4127452d12..4083269deb 100644
--- a/ydb/library/yql/providers/pq/provider/yql_pq_ut.cpp
+++ b/ydb/library/yql/providers/pq/provider/yql_pq_ut.cpp
@@ -1,221 +1,221 @@
-#include <library/cpp/testing/unittest/registar.h>
-
+#include <library/cpp/testing/unittest/registar.h>
+
#include <ydb/library/yql/dq/comp_nodes/yql_common_dq_factory.h>
#include <ydb/library/yql/dq/comp_nodes/yql_common_dq_transform.h>
-
+
#include <ydb/library/yql/providers/common/comp_nodes/yql_factory.h>
-
+
#include <ydb/library/yql/providers/dq/provider/yql_dq_gateway.h>
#include <ydb/library/yql/providers/dq/provider/yql_dq_provider.h>
-
+
#include <ydb/library/yql/providers/pq/gateway/dummy/yql_pq_dummy_gateway.h>
#include <ydb/library/yql/providers/pq/provider/yql_pq_provider.h>
-
+
#include <ydb/library/yql/providers/solomon/gateway/yql_solomon_gateway.h>
#include <ydb/library/yql/providers/solomon/provider/yql_solomon_provider.h>
-
+
#include <ydb/library/yql/minikql/comp_nodes/mkql_factories.h>
#include <ydb/library/yql/minikql/invoke_builtins/mkql_builtins.h>
#include <ydb/library/yql/minikql/mkql_function_registry.h>
-
+
#include <ydb/library/yql/providers/common/provider/yql_provider_names.h>
#include <ydb/library/yql/providers/common/proto/gateways_config.pb.h>
-
+
#include <ydb/library/yql/providers/dq/provider/exec/yql_dq_exectransformer.h>
#include <ydb/library/yql/providers/dq/local_gateway/yql_dq_gateway_local.h>
-
+
#include <ydb/library/yql/core/facade/yql_facade.h>
#include <ydb/library/yql/utils/log/log.h>
#include <ydb/library/yql/core/services/mounts/yql_mounts.h>
-
+
#include <ydb/library/yql/core/file_storage/proto/file_storage.pb.h>
#include <ydb/library/yql/core/file_storage/file_storage.h>
-
+
#include <ydb/public/sdk/cpp/client/ydb_driver/driver.h>
-
-#include <util/stream/tee.h>
-#include <util/string/cast.h>
-
-namespace NYql {
-
-bool RunPqProgram(
- const TString& code,
- bool optimizeOnly,
- bool printExpr = false,
- bool printTrace = false,
- TString* errorsMessage = nullptr) {
- NLog::YqlLoggerScope logger("cerr", false);
- NLog::YqlLogger().SetComponentLevel(NLog::EComponent::Core, NLog::ELevel::DEBUG);
- NLog::YqlLogger().SetComponentLevel(NLog::EComponent::ProviderRtmr, NLog::ELevel::DEBUG);
-
- IOutputStream* errorsOutput = &Cerr;
- TMaybe<TStringOutput> errorsMessageOutput;
- TMaybe<TTeeOutput> tee;
- if (errorsMessage) {
- errorsMessageOutput.ConstructInPlace(*errorsMessage);
- tee.ConstructInPlace(&*errorsMessageOutput, &Cerr);
- errorsOutput = &*tee;
- }
-
- // Gateways config.
- TGatewaysConfig gatewaysConfig;
- // pq
- {
- auto& pqClusterConfig = *gatewaysConfig.MutablePq()->MutableClusterMapping()->Add();
- pqClusterConfig.SetName("lb");
- pqClusterConfig.SetClusterType(NYql::TPqClusterConfig::CT_PERS_QUEUE);
- pqClusterConfig.SetEndpoint("lb.ru");
- pqClusterConfig.SetConfigManagerEndpoint("cm.lb.ru");
- pqClusterConfig.SetTvmId(777);
- }
-
- // solomon
- {
- auto& solomonClusterConfig = *gatewaysConfig.MutableSolomon()->MutableClusterMapping()->Add();
- solomonClusterConfig.SetName("sol");
- solomonClusterConfig.SetCluster("sol.ru");
- }
-
- // dq
- {
- auto& dqCfg = *gatewaysConfig.MutableDq();
- auto* setting = dqCfg.AddDefaultSettings();
- setting->SetName("EnableComputeActor");
- setting->SetValue("1");
- }
-
- auto functionRegistry = NKikimr::NMiniKQL::CreateFunctionRegistry(NKikimr::NMiniKQL::CreateBuiltinRegistry())->Clone();
- TVector<TDataProviderInitializer> dataProvidersInit;
-
- // pq
- auto pqGateway = MakeIntrusive<TDummyPqGateway>();
- pqGateway->AddDummyTopic(TDummyTopic("lb", "my_in_topic"));
- pqGateway->AddDummyTopic(TDummyTopic("lb", "my_out_topic"));
- dataProvidersInit.push_back(GetPqDataProviderInitializer(std::move(pqGateway)));
-
- // solomon
- auto solomonGateway = CreateSolomonGateway(gatewaysConfig.GetSolomon());
- dataProvidersInit.push_back(GetSolomonDataProviderInitializer(std::move(solomonGateway)));
-
- // dq
- auto dqCompFactory = NKikimr::NMiniKQL::GetCompositeWithBuiltinFactory({
- NYql::GetCommonDqFactory(),
- NKikimr::NMiniKQL::GetYqlFactory()
- });
-
- auto dqTaskTransformFactory = NYql::CreateCompositeTaskTransformFactory({
- NYql::CreateCommonDqTaskTransformFactory()
- });
-
+
+#include <util/stream/tee.h>
+#include <util/string/cast.h>
+
+namespace NYql {
+
+bool RunPqProgram(
+ const TString& code,
+ bool optimizeOnly,
+ bool printExpr = false,
+ bool printTrace = false,
+ TString* errorsMessage = nullptr) {
+ NLog::YqlLoggerScope logger("cerr", false);
+ NLog::YqlLogger().SetComponentLevel(NLog::EComponent::Core, NLog::ELevel::DEBUG);
+ NLog::YqlLogger().SetComponentLevel(NLog::EComponent::ProviderRtmr, NLog::ELevel::DEBUG);
+
+ IOutputStream* errorsOutput = &Cerr;
+ TMaybe<TStringOutput> errorsMessageOutput;
+ TMaybe<TTeeOutput> tee;
+ if (errorsMessage) {
+ errorsMessageOutput.ConstructInPlace(*errorsMessage);
+ tee.ConstructInPlace(&*errorsMessageOutput, &Cerr);
+ errorsOutput = &*tee;
+ }
+
+ // Gateways config.
+ TGatewaysConfig gatewaysConfig;
+ // pq
+ {
+ auto& pqClusterConfig = *gatewaysConfig.MutablePq()->MutableClusterMapping()->Add();
+ pqClusterConfig.SetName("lb");
+ pqClusterConfig.SetClusterType(NYql::TPqClusterConfig::CT_PERS_QUEUE);
+ pqClusterConfig.SetEndpoint("lb.ru");
+ pqClusterConfig.SetConfigManagerEndpoint("cm.lb.ru");
+ pqClusterConfig.SetTvmId(777);
+ }
+
+ // solomon
+ {
+ auto& solomonClusterConfig = *gatewaysConfig.MutableSolomon()->MutableClusterMapping()->Add();
+ solomonClusterConfig.SetName("sol");
+ solomonClusterConfig.SetCluster("sol.ru");
+ }
+
+ // dq
+ {
+ auto& dqCfg = *gatewaysConfig.MutableDq();
+ auto* setting = dqCfg.AddDefaultSettings();
+ setting->SetName("EnableComputeActor");
+ setting->SetValue("1");
+ }
+
+ auto functionRegistry = NKikimr::NMiniKQL::CreateFunctionRegistry(NKikimr::NMiniKQL::CreateBuiltinRegistry())->Clone();
+ TVector<TDataProviderInitializer> dataProvidersInit;
+
+ // pq
+ auto pqGateway = MakeIntrusive<TDummyPqGateway>();
+ pqGateway->AddDummyTopic(TDummyTopic("lb", "my_in_topic"));
+ pqGateway->AddDummyTopic(TDummyTopic("lb", "my_out_topic"));
+ dataProvidersInit.push_back(GetPqDataProviderInitializer(std::move(pqGateway)));
+
+ // solomon
+ auto solomonGateway = CreateSolomonGateway(gatewaysConfig.GetSolomon());
+ dataProvidersInit.push_back(GetSolomonDataProviderInitializer(std::move(solomonGateway)));
+
+ // dq
+ auto dqCompFactory = NKikimr::NMiniKQL::GetCompositeWithBuiltinFactory({
+ NYql::GetCommonDqFactory(),
+ NKikimr::NMiniKQL::GetYqlFactory()
+ });
+
+ auto dqTaskTransformFactory = NYql::CreateCompositeTaskTransformFactory({
+ NYql::CreateCommonDqTaskTransformFactory()
+ });
+
const auto driverConfig = NYdb::TDriverConfig().SetLog(CreateLogBackend("cerr"));
NYdb::TDriver driver(driverConfig);
auto dqGateway = CreateLocalDqGateway(driver, functionRegistry.Get(), dqCompFactory, dqTaskTransformFactory, {});
-
- auto storage = NYql::CreateFileStorage({});
+
+ auto storage = NYql::CreateFileStorage({});
dataProvidersInit.push_back(NYql::GetDqDataProviderInitializer(&CreateInMemoryExecTransformer, dqGateway, dqCompFactory, {}, storage));
-
- TExprContext moduleCtx;
- IModuleResolver::TPtr moduleResolver;
- YQL_ENSURE(GetYqlDefaultModuleResolver(moduleCtx, moduleResolver));
-
- TProgramFactory factory(true, functionRegistry.Get(), 0ULL, dataProvidersInit, "ut");
-
- factory.SetGatewaysConfig(&gatewaysConfig);
- factory.SetModules(moduleResolver);
-
- TProgramPtr program = factory.Create("program", code);
+
+ TExprContext moduleCtx;
+ IModuleResolver::TPtr moduleResolver;
+ YQL_ENSURE(GetYqlDefaultModuleResolver(moduleCtx, moduleResolver));
+
+ TProgramFactory factory(true, functionRegistry.Get(), 0ULL, dataProvidersInit, "ut");
+
+ factory.SetGatewaysConfig(&gatewaysConfig);
+ factory.SetModules(moduleResolver);
+
+ TProgramPtr program = factory.Create("program", code);
program->ConfigureYsonResultFormat(NYson::EYsonFormat::Text);
-
- Cerr << "Parse SQL..." << Endl;
- NSQLTranslation::TTranslationSettings sqlSettings;
- sqlSettings.SyntaxVersion = 1;
- sqlSettings.V0Behavior = NSQLTranslation::EV0Behavior::Disable;
- sqlSettings.Flags.insert("DqEngineEnable");
- sqlSettings.Flags.insert("DqEngineForce");
-
- sqlSettings.ClusterMapping["lb"] = PqProviderName;
- sqlSettings.ClusterMapping["sol"] = SolomonProviderName;
- if (!program->ParseSql(sqlSettings)) {
- program->PrintErrorsTo(*errorsOutput);
- return false;
- }
- program->AstRoot()->PrettyPrintTo(Cerr, NYql::TAstPrintFlags::PerLine | NYql::TAstPrintFlags::ShortQuote);
-
-
- Cerr << "Compile..." << Endl;
- if (!program->Compile("user")) {
- program->PrintErrorsTo(*errorsOutput);
- return false;
- }
-
- auto exprOut = printExpr ? &Cout : nullptr;
- auto traceOpt = printTrace ? &Cerr : nullptr;
-
- TProgram::TStatus status = TProgram::TStatus::Error;
- if (optimizeOnly) {
- Cerr << "Optimize..." << Endl;
- status = program->Optimize("user", traceOpt, nullptr, exprOut);
- } else {
- Cerr << "Run..." << Endl;
- status = program->Run("user", traceOpt, nullptr, exprOut);
- }
-
- if (status == TProgram::TStatus::Error) {
- if (printTrace) {
- program->Print(traceOpt, nullptr);
- }
- program->PrintErrorsTo(*errorsOutput);
- return false;
- }
-
+
+ Cerr << "Parse SQL..." << Endl;
+ NSQLTranslation::TTranslationSettings sqlSettings;
+ sqlSettings.SyntaxVersion = 1;
+ sqlSettings.V0Behavior = NSQLTranslation::EV0Behavior::Disable;
+ sqlSettings.Flags.insert("DqEngineEnable");
+ sqlSettings.Flags.insert("DqEngineForce");
+
+ sqlSettings.ClusterMapping["lb"] = PqProviderName;
+ sqlSettings.ClusterMapping["sol"] = SolomonProviderName;
+ if (!program->ParseSql(sqlSettings)) {
+ program->PrintErrorsTo(*errorsOutput);
+ return false;
+ }
+ program->AstRoot()->PrettyPrintTo(Cerr, NYql::TAstPrintFlags::PerLine | NYql::TAstPrintFlags::ShortQuote);
+
+
+ Cerr << "Compile..." << Endl;
+ if (!program->Compile("user")) {
+ program->PrintErrorsTo(*errorsOutput);
+ return false;
+ }
+
+ auto exprOut = printExpr ? &Cout : nullptr;
+ auto traceOpt = printTrace ? &Cerr : nullptr;
+
+ TProgram::TStatus status = TProgram::TStatus::Error;
+ if (optimizeOnly) {
+ Cerr << "Optimize..." << Endl;
+ status = program->Optimize("user", traceOpt, nullptr, exprOut);
+ } else {
+ Cerr << "Run..." << Endl;
+ status = program->Run("user", traceOpt, nullptr, exprOut);
+ }
+
+ if (status == TProgram::TStatus::Error) {
+ if (printTrace) {
+ program->Print(traceOpt, nullptr);
+ }
+ program->PrintErrorsTo(*errorsOutput);
+ return false;
+ }
+
driver.Stop(true);
- Cerr << "Done." << Endl;
- return true;
-}
-
-Y_UNIT_TEST_SUITE(YqlPqSimpleTests) {
-
- Y_UNIT_TEST(SelectWithNoSchema) {
- auto code = R"(
-USE lb;
-PRAGMA pq.Consumer="my_test_consumer";
-INSERT INTO my_out_topic
-SELECT Data FROM my_in_topic WHERE Data < "100";
- )";
- TString errorMessage;
- auto res = RunPqProgram(code, true, true, true, &errorMessage);
- UNIT_ASSERT_C(res, errorMessage);
- }
-
- Y_UNIT_TEST(SelectWithSchema) {
- auto code = R"(
-USE lb;
-PRAGMA pq.Consumer="my_test_consumer";
-
-INSERT INTO my_out_topic
-SELECT CAST(y as string) || x FROM lb.object(my_in_topic, "json") WITH SCHEMA (Int32 as y, String as x)
- )";
- TString errorMessage;
- auto res = RunPqProgram(code, true, true, true, &errorMessage);
- UNIT_ASSERT_C(res, errorMessage);
- }
-
- Y_UNIT_TEST(SelectStarWithSchema) {
- auto code = R"(
-USE lb;
-PRAGMA pq.Consumer="my_test_consumer";
-
-$q = SELECT * FROM lb.object(my_in_topic, "json") WITH SCHEMA (Int32 as y, String as x);
-INSERT INTO my_out_topic
-SELECT x FROM $q
- )";
- TString errorMessage;
- auto res = RunPqProgram(code, true, true, true, &errorMessage);
- UNIT_ASSERT_C(res, errorMessage);
- }
-
-}
-
-} // NYql
+ Cerr << "Done." << Endl;
+ return true;
+}
+
+Y_UNIT_TEST_SUITE(YqlPqSimpleTests) {
+
+ Y_UNIT_TEST(SelectWithNoSchema) {
+ auto code = R"(
+USE lb;
+PRAGMA pq.Consumer="my_test_consumer";
+INSERT INTO my_out_topic
+SELECT Data FROM my_in_topic WHERE Data < "100";
+ )";
+ TString errorMessage;
+ auto res = RunPqProgram(code, true, true, true, &errorMessage);
+ UNIT_ASSERT_C(res, errorMessage);
+ }
+
+ Y_UNIT_TEST(SelectWithSchema) {
+ auto code = R"(
+USE lb;
+PRAGMA pq.Consumer="my_test_consumer";
+
+INSERT INTO my_out_topic
+SELECT CAST(y as string) || x FROM lb.object(my_in_topic, "json") WITH SCHEMA (Int32 as y, String as x)
+ )";
+ TString errorMessage;
+ auto res = RunPqProgram(code, true, true, true, &errorMessage);
+ UNIT_ASSERT_C(res, errorMessage);
+ }
+
+ Y_UNIT_TEST(SelectStarWithSchema) {
+ auto code = R"(
+USE lb;
+PRAGMA pq.Consumer="my_test_consumer";
+
+$q = SELECT * FROM lb.object(my_in_topic, "json") WITH SCHEMA (Int32 as y, String as x);
+INSERT INTO my_out_topic
+SELECT x FROM $q
+ )";
+ TString errorMessage;
+ auto res = RunPqProgram(code, true, true, true, &errorMessage);
+ UNIT_ASSERT_C(res, errorMessage);
+ }
+
+}
+
+} // NYql
diff --git a/ydb/library/yql/providers/s3/actors/ya.make b/ydb/library/yql/providers/s3/actors/ya.make
index e23702313d..051ef515ed 100644
--- a/ydb/library/yql/providers/s3/actors/ya.make
+++ b/ydb/library/yql/providers/s3/actors/ya.make
@@ -1,7 +1,7 @@
LIBRARY()
OWNER(
- g:yq
+ g:yq
g:yql
)
diff --git a/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp b/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp
index eb5410a24e..77e944c42b 100644
--- a/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp
+++ b/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.cpp
@@ -229,7 +229,7 @@ std::pair<NYql::NDq::IDqSourceActor*, IActor*> CreateS3ReadActor(
ui64 inputIndex,
const THashMap<TString, TString>& secureParams,
const THashMap<TString, TString>& taskParams,
- NYql::NDq::IDqSourceActor::ICallbacks* callback,
+ NYql::NDq::IDqSourceActor::ICallbacks* callback,
ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
const std::shared_ptr<NS3::TRetryConfig>& retryConfig)
{
diff --git a/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.h b/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.h
index 9280e9ba2e..5b0723ffb9 100644
--- a/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.h
+++ b/ydb/library/yql/providers/s3/actors/yql_s3_read_actor.h
@@ -15,7 +15,7 @@ std::pair<NYql::NDq::IDqSourceActor*, NActors::IActor*> CreateS3ReadActor(
ui64 inputIndex,
const THashMap<TString, TString>& secureParams,
const THashMap<TString, TString>& taskParams,
- IDqSourceActor::ICallbacks* callback,
+ IDqSourceActor::ICallbacks* callback,
ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
const std::shared_ptr<NYql::NS3::TRetryConfig>& retryConfig = nullptr);
diff --git a/ydb/library/yql/providers/s3/actors/yql_s3_source_factory.h b/ydb/library/yql/providers/s3/actors/yql_s3_source_factory.h
index 2df0a312b1..2d808507ed 100644
--- a/ydb/library/yql/providers/s3/actors/yql_s3_source_factory.h
+++ b/ydb/library/yql/providers/s3/actors/yql_s3_source_factory.h
@@ -7,7 +7,7 @@
#include <ydb/library/yql/providers/common/http_gateway/yql_http_gateway.h>
#include <ydb/library/yql/providers/s3/proto/retry_config.pb.h>
-
+
namespace NYql::NDq {
void RegisterS3ReadActorFactory(
diff --git a/ydb/library/yql/providers/s3/expr_nodes/ya.make b/ydb/library/yql/providers/s3/expr_nodes/ya.make
index 6d3003f148..35e2822a8f 100644
--- a/ydb/library/yql/providers/s3/expr_nodes/ya.make
+++ b/ydb/library/yql/providers/s3/expr_nodes/ya.make
@@ -1,7 +1,7 @@
LIBRARY()
OWNER(
- g:yq
+ g:yq
g:yql
)
diff --git a/ydb/library/yql/providers/s3/expr_nodes/yql_s3_expr_nodes.json b/ydb/library/yql/providers/s3/expr_nodes/yql_s3_expr_nodes.json
index ffb5fb8035..33de86a757 100644
--- a/ydb/library/yql/providers/s3/expr_nodes/yql_s3_expr_nodes.json
+++ b/ydb/library/yql/providers/s3/expr_nodes/yql_s3_expr_nodes.json
@@ -44,7 +44,7 @@
"Match": {"Type": "Callable", "Name": "S3SourceSettings"},
"Children": [
{"Index": 0, "Name": "Paths", "Type": "TS3Paths"},
- {"Index": 1, "Name": "Token", "Type": "TCoSecureParam"}
+ {"Index": 1, "Name": "Token", "Type": "TCoSecureParam"}
]
},
{
diff --git a/ydb/library/yql/providers/s3/proto/ya.make b/ydb/library/yql/providers/s3/proto/ya.make
index 48215f2ab5..783f2e0447 100644
--- a/ydb/library/yql/providers/s3/proto/ya.make
+++ b/ydb/library/yql/providers/s3/proto/ya.make
@@ -1,7 +1,7 @@
-OWNER(
- g:yq
- g:yql
-)
+OWNER(
+ g:yq
+ g:yql
+)
PROTO_LIBRARY()
diff --git a/ydb/library/yql/providers/s3/provider/ya.make b/ydb/library/yql/providers/s3/provider/ya.make
index 075bad7b0b..4381d08a79 100644
--- a/ydb/library/yql/providers/s3/provider/ya.make
+++ b/ydb/library/yql/providers/s3/provider/ya.make
@@ -1,7 +1,7 @@
LIBRARY()
OWNER(
- g:yq
+ g:yq
g:yql
)
diff --git a/ydb/library/yql/providers/s3/provider/yql_s3_dq_integration.cpp b/ydb/library/yql/providers/s3/provider/yql_s3_dq_integration.cpp
index 539272add6..96e03972c3 100644
--- a/ydb/library/yql/providers/s3/provider/yql_s3_dq_integration.cpp
+++ b/ydb/library/yql/providers/s3/provider/yql_s3_dq_integration.cpp
@@ -101,14 +101,14 @@ public:
);
}
- const auto token = "cluster:default_" + clusterName;
- YQL_CLOG(INFO, ProviderS3) << "Wrap " << read->Content() << " with token: " << token;
+ const auto token = "cluster:default_" + clusterName;
+ YQL_CLOG(INFO, ProviderS3) << "Wrap " << read->Content() << " with token: " << token;
return Build<TDqSourceWrap>(ctx, read->Pos())
.Input<TS3SourceSettings>()
.Paths(s3ReadObject.Object().Paths())
.Token<TCoSecureParam>()
- .Name().Build(token)
+ .Name().Build(token)
.Build()
.Build()
.RowType(ExpandType(s3ReadObject.Pos(), *rowType, ctx))
@@ -124,7 +124,7 @@ public:
if (const auto maySettings = source.Settings().Maybe<TS3SourceSettings>()) {
const auto settings = maySettings.Cast();
const auto& cluster = source.DataSource().Cast<TS3DataSource>().Cluster().StringValue();
- const auto& connect = State_->Configuration->Clusters.at(cluster);
+ const auto& connect = State_->Configuration->Clusters.at(cluster);
NS3::TSource srcDesc;
srcDesc.SetUrl(connect.Url);
diff --git a/ydb/library/yql/providers/s3/provider/yql_s3_io_discovery.cpp b/ydb/library/yql/providers/s3/provider/yql_s3_io_discovery.cpp
index 3e0384c9d7..7d171d5cd3 100644
--- a/ydb/library/yql/providers/s3/provider/yql_s3_io_discovery.cpp
+++ b/ydb/library/yql/providers/s3/provider/yql_s3_io_discovery.cpp
@@ -63,13 +63,13 @@ void OnDiscovery(
auto& items = std::get<TItemsMap>(output);
if (items.size() + contents.size() > 9000ULL) {
std::get<TIssues>(output) = { TIssue(pos, TStringBuilder() << "It's over nine thousand items under '" << std::get<0U>(keys) << std::get<1U>(keys) << "'!")};
- break;
+ break;
}
for (const auto& content : contents) {
items.emplace(content.Node("s3:Key", false, nss).Value<TString>(), content.Node("s3:Size", false, nss).Value<unsigned>());
}
-
+
if (root.Node("s3:IsTruncated", false, nss).Value<bool>()) {
if (const auto g = gateway.lock()) {
const auto& next = root.Node("s3:NextContinuationToken", false, nss).Value<TString>();
@@ -81,11 +81,11 @@ void OnDiscovery(
headers.emplace_back(token);
return g->Download(std::get<0U>(keys) + "?list-type=2&prefix=" + prefix + "&continuation-token=" + next + "&max-keys=" + maxKeys, std::move(headers), 0U,
std::bind(&OnDiscovery, gateway, pos, std::placeholders::_1, std::cref(keys), std::ref(output), std::move(promise), pendingBucketsWPtr, promiseInd));
- }
+ }
YQL_CLOG(INFO, ProviderS3) << "Gateway disappeared.";
- }
+ }
}
-
+
break;
} catch (const std::exception& ex) {
logMsg += TStringBuilder() << "Exception occurred: " << ex.what();
@@ -182,11 +182,11 @@ public:
const auto& object = read.Arg(2).Ref();
const std::string_view& path = object.Head().Content();
const auto& prefix = path.substr(0U, path.find_first_of("*?{"));
- const auto& connect = State_->Configuration->Clusters.at(read.DataSource().Cluster().StringValue());
- const auto& token = State_->Configuration->Tokens.at(read.DataSource().Cluster().StringValue());
- const auto credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(State_->CredentialsFactory, token);
- const auto authToken = credentialsProviderFactory->CreateProvider()->GetAuthInfo();
-
+ const auto& connect = State_->Configuration->Clusters.at(read.DataSource().Cluster().StringValue());
+ const auto& token = State_->Configuration->Tokens.at(read.DataSource().Cluster().StringValue());
+ const auto credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(State_->CredentialsFactory, token);
+ const auto authToken = credentialsProviderFactory->CreateProvider()->GetAuthInfo();
+
std::get<TNodeSet>((*PendingBuckets_)[std::make_tuple(connect.Url, TString(prefix), authToken.empty() ? TString() : TString("X-YaCloud-SubjectToken:") += authToken)]).emplace(read.Raw());
}
}
@@ -223,9 +223,9 @@ public:
}
TStatus DoApplyAsyncChanges(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext& ctx) final {
- // Raise errors if any
- AllFuture_.GetValue();
-
+ // Raise errors if any
+ AllFuture_.GetValue();
+
TNodeOnNodeOwnedMap replaces(PendingBuckets_->size());
auto buckets = std::move(*PendingBuckets_);
auto count = 0ULL;
@@ -234,11 +234,11 @@ public:
if (const auto issues = std::move(std::get<TIssues>(bucket.second))) {
YQL_CLOG(INFO, ProviderS3) << "Discovery " << std::get<0U>(bucket.first) << std::get<1U>(bucket.first) << " error " << issues.ToString();
std::for_each(issues.begin(), issues.end(), std::bind(&TExprContext::AddError, std::ref(ctx), std::placeholders::_1));
- return TStatus::Error;
- }
-
- const auto nodes = std::move(std::get<TNodeSet>(bucket.second));
- for (const auto r : nodes) {
+ return TStatus::Error;
+ }
+
+ const auto nodes = std::move(std::get<TNodeSet>(bucket.second));
+ for (const auto r : nodes) {
const TS3Read read(r);
const auto& object = read.Arg(2).Ref();
const std::string_view& path = object.Head().Content();
@@ -278,7 +278,7 @@ public:
}
YQL_CLOG(INFO, ProviderS3) << "Object " << path << " has " << paths.size() << " items with total size " << total;
} else if (const auto f = items.find(TString(path)); items.cend() == f) {
- ctx.AddError(TIssue(ctx.GetPosition(object.Pos()), TStringBuilder() << "Object " << path << " doesn't exist."));
+ ctx.AddError(TIssue(ctx.GetPosition(object.Pos()), TStringBuilder() << "Object " << path << " doesn't exist."));
return TStatus::Error;
} else if (const auto size = f->second; size > State_->Configuration->FileSizeLimit) {
ctx.AddError(TIssue(ctx.GetPosition(object.Pos()), TStringBuilder() << "Object " << path << " size " << size << " is too large."));
diff --git a/ydb/library/yql/providers/s3/provider/yql_s3_provider.cpp b/ydb/library/yql/providers/s3/provider/yql_s3_provider.cpp
index 4d70add3c0..aa8d0e7d99 100644
--- a/ydb/library/yql/providers/s3/provider/yql_s3_provider.cpp
+++ b/ydb/library/yql/providers/s3/provider/yql_s3_provider.cpp
@@ -26,9 +26,9 @@ TDataProviderInitializer GetS3DataProviderInitializer(IHTTPGateway::TPtr gateway
state->Types = typeCtx.Get();
state->FunctionRegistry = functionRegistry;
- state->CredentialsFactory = credentialsFactory;
+ state->CredentialsFactory = credentialsFactory;
if (gatewaysConfig) {
- state->Configuration->Init(gatewaysConfig->GetS3(), typeCtx);
+ state->Configuration->Init(gatewaysConfig->GetS3(), typeCtx);
}
TDataProviderInfo info;
diff --git a/ydb/library/yql/providers/s3/provider/yql_s3_provider.h b/ydb/library/yql/providers/s3/provider/yql_s3_provider.h
index 12cd74f805..35ef6ba15e 100644
--- a/ydb/library/yql/providers/s3/provider/yql_s3_provider.h
+++ b/ydb/library/yql/providers/s3/provider/yql_s3_provider.h
@@ -26,7 +26,7 @@ struct TS3State : public TThrRefBase
TTypeAnnotationContext* Types = nullptr;
TS3Configuration::TPtr Configuration = MakeIntrusive<TS3Configuration>();
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry = nullptr;
- ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
+ ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
};
TDataProviderInitializer GetS3DataProviderInitializer(IHTTPGateway::TPtr gateway, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory = nullptr);
diff --git a/ydb/library/yql/providers/s3/provider/yql_s3_settings.cpp b/ydb/library/yql/providers/s3/provider/yql_s3_settings.cpp
index 99c308eaf3..504800e677 100644
--- a/ydb/library/yql/providers/s3/provider/yql_s3_settings.cpp
+++ b/ydb/library/yql/providers/s3/provider/yql_s3_settings.cpp
@@ -19,7 +19,7 @@ bool TS3Configuration::HasCluster(TStringBuf cluster) const {
return ValidClusters.contains(cluster);
}
-void TS3Configuration::Init(const TS3GatewayConfig& config, TIntrusivePtr<TTypeAnnotationContext> typeCtx)
+void TS3Configuration::Init(const TS3GatewayConfig& config, TIntrusivePtr<TTypeAnnotationContext> typeCtx)
{
FileSizeLimit = config.HasFileSizeLimit() ? config.GetFileSizeLimit() : 2_GB;
MaxFilesPerQuery = config.HasMaxFilesPerQuery() ? config.GetMaxFilesPerQuery() : 7000;
@@ -37,11 +37,11 @@ void TS3Configuration::Init(const TS3GatewayConfig& config, TIntrusivePtr<TTypeA
this->Dispatch(cluster.GetName(), cluster.GetSettings());
auto& settings = Clusters[cluster.GetName()];
settings.Url = cluster.GetUrl();
- TString authToken;
+ TString authToken;
if (const auto& token = cluster.GetToken()) {
authToken = typeCtx->FindCredentialContent("cluster:default_" + cluster.GetName(), "", token);
- }
- Tokens[cluster.GetName()] = ComposeStructuredTokenJsonForServiceAccount(cluster.GetServiceAccountId(), cluster.GetServiceAccountIdSignature(), authToken);
+ }
+ Tokens[cluster.GetName()] = ComposeStructuredTokenJsonForServiceAccount(cluster.GetServiceAccountId(), cluster.GetServiceAccountIdSignature(), authToken);
}
this->FreezeDefaults();
}
diff --git a/ydb/library/yql/providers/s3/provider/yql_s3_settings.h b/ydb/library/yql/providers/s3/provider/yql_s3_settings.h
index 9bbcb72c87..268c1648a9 100644
--- a/ydb/library/yql/providers/s3/provider/yql_s3_settings.h
+++ b/ydb/library/yql/providers/s3/provider/yql_s3_settings.h
@@ -23,7 +23,7 @@ struct TS3Configuration : public TS3Settings, public NCommon::TSettingDispatcher
TS3Configuration();
TS3Configuration(const TS3Configuration&) = delete;
- void Init(const TS3GatewayConfig& config, TIntrusivePtr<TTypeAnnotationContext> typeCtx);
+ void Init(const TS3GatewayConfig& config, TIntrusivePtr<TTypeAnnotationContext> typeCtx);
bool HasCluster(TStringBuf cluster) const;
diff --git a/ydb/library/yql/providers/s3/ya.make b/ydb/library/yql/providers/s3/ya.make
index f97084d1aa..7323d161bc 100644
--- a/ydb/library/yql/providers/s3/ya.make
+++ b/ydb/library/yql/providers/s3/ya.make
@@ -1,11 +1,11 @@
-OWNER(
- g:yq
- g:yql
-)
-
-RECURSE(
- actors
- expr_nodes
- proto
- provider
-)
+OWNER(
+ g:yq
+ g:yql
+)
+
+RECURSE(
+ actors
+ expr_nodes
+ proto
+ provider
+)
diff --git a/ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.cpp b/ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.cpp
index fc07635176..03f3e76350 100644
--- a/ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.cpp
+++ b/ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.cpp
@@ -82,8 +82,8 @@ public:
ui64 outputIndex,
TDqSolomonWriteParams&& writeParams,
NYql::NDq::IDqSinkActor::ICallbacks* callbacks,
- const NMonitoring::TDynamicCounterPtr& counters,
- std::shared_ptr<NYdb::ICredentialsProvider> credentialsProvider,
+ const NMonitoring::TDynamicCounterPtr& counters,
+ std::shared_ptr<NYdb::ICredentialsProvider> credentialsProvider,
i64 freeSpace)
: TActor<TDqSolomonWriteActor>(&TDqSolomonWriteActor::StateFunc)
, OutputIndex(outputIndex)
@@ -95,7 +95,7 @@ public:
, UserMetricsEncoder(
WriteParams.Shard.GetScheme(),
WriteParams.Shard.GetClusterType() == NSo::NProto::ESolomonClusterType::CT_MONITORING)
- , CredentialsProvider(credentialsProvider)
+ , CredentialsProvider(credentialsProvider)
{
SINK_LOG_D("Init");
}
@@ -246,7 +246,7 @@ private:
TString GetUrl() const {
TStringBuilder builder;
- builder << (WriteParams.Shard.GetUseSsl() ? "https://" : "http://");
+ builder << (WriteParams.Shard.GetUseSsl() ? "https://" : "http://");
builder << WriteParams.Shard.GetEndpoint();
switch (WriteParams.Shard.GetClusterType()) {
@@ -295,14 +295,14 @@ private:
void FillAuth(NHttp::THttpOutgoingRequestPtr& httpRequest) {
const TString authorizationHeader = "Authorization";
- const TString authToken = CredentialsProvider->GetAuthInfo();
+ const TString authToken = CredentialsProvider->GetAuthInfo();
switch (WriteParams.Shard.GetClusterType()) {
case NSo::NProto::ESolomonClusterType::CT_SOLOMON:
- httpRequest->Set(authorizationHeader, "OAuth " + authToken);
+ httpRequest->Set(authorizationHeader, "OAuth " + authToken);
break;
case NSo::NProto::ESolomonClusterType::CT_MONITORING:
- httpRequest->Set(authorizationHeader, "Bearer " + authToken);
+ httpRequest->Set(authorizationHeader, "Bearer " + authToken);
break;
default:
Y_ENSURE(false, "Invalid cluster type " << ToString<ui32>(WriteParams.Shard.GetClusterType()));
@@ -430,7 +430,7 @@ private:
THashMap<NHttp::THttpOutgoingRequestPtr, TMetricsInflight> InflightBuffer;
TMetricsEncoder UserMetricsEncoder;
- std::shared_ptr<NYdb::ICredentialsProvider> CredentialsProvider;
+ std::shared_ptr<NYdb::ICredentialsProvider> CredentialsProvider;
};
std::pair<NYql::NDq::IDqSinkActor*, NActors::IActor*> CreateDqSolomonWriteActor(
@@ -438,33 +438,33 @@ std::pair<NYql::NDq::IDqSinkActor*, NActors::IActor*> CreateDqSolomonWriteActor(
ui64 outputIndex,
const THashMap<TString, TString>& secureParams,
NYql::NDq::IDqSinkActor::ICallbacks* callbacks,
- const NMonitoring::TDynamicCounterPtr& counters,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
+ const NMonitoring::TDynamicCounterPtr& counters,
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
i64 freeSpace)
{
- const TString& tokenName = settings.GetToken().GetName();
- const TString token = secureParams.Value(tokenName, TString());
+ const TString& tokenName = settings.GetToken().GetName();
+ const TString token = secureParams.Value(tokenName, TString());
TDqSolomonWriteParams params {
.Shard = std::move(settings),
};
- auto credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(credentialsFactory, token);
- auto credentialsProvider = credentialsProviderFactory->CreateProvider();
-
+ auto credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(credentialsFactory, token);
+ auto credentialsProvider = credentialsProviderFactory->CreateProvider();
+
TDqSolomonWriteActor* actor = new TDqSolomonWriteActor(
outputIndex,
std::move(params),
callbacks,
counters,
- credentialsProvider,
+ credentialsProvider,
freeSpace);
return {actor, actor};
}
-void RegisterDQSolomonWriteActorFactory(TDqSinkFactory& factory, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory) {
+void RegisterDQSolomonWriteActorFactory(TDqSinkFactory& factory, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory) {
factory.Register<NSo::NProto::TDqSolomonShard>("SolomonSink",
- [credentialsFactory](
+ [credentialsFactory](
NYql::NSo::NProto::TDqSolomonShard&& settings,
IDqSinkActorFactory::TArguments&& args)
{
@@ -475,8 +475,8 @@ void RegisterDQSolomonWriteActorFactory(TDqSinkFactory& factory, ISecuredService
args.OutputIndex,
args.SecureParams,
args.Callback,
- counters,
- credentialsFactory);
+ counters,
+ credentialsFactory);
});
}
diff --git a/ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.h b/ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.h
index 56c34cbb25..b7209ee24f 100644
--- a/ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.h
+++ b/ydb/library/yql/providers/solomon/async_io/dq_solomon_write_actor.h
@@ -23,10 +23,10 @@ std::pair<NYql::NDq::IDqSinkActor*, NActors::IActor*> CreateDqSolomonWriteActor(
ui64 outputIndex,
const THashMap<TString, TString>& secureParams,
NYql::NDq::IDqSinkActor::ICallbacks* callbacks,
- const NMonitoring::TDynamicCounterPtr& counters,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
+ const NMonitoring::TDynamicCounterPtr& counters,
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory,
i64 freeSpace = DqSolomonDefaultFreeSpace);
-void RegisterDQSolomonWriteActorFactory(TDqSinkFactory& factory, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory);
+void RegisterDQSolomonWriteActorFactory(TDqSinkFactory& factory, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory);
} // namespace NYql::NDq
diff --git a/ydb/library/yql/providers/solomon/async_io/ut/ut_helpers.cpp b/ydb/library/yql/providers/solomon/async_io/ut/ut_helpers.cpp
index a97b2af780..d1cfad8700 100644
--- a/ydb/library/yql/providers/solomon/async_io/ut/ut_helpers.cpp
+++ b/ydb/library/yql/providers/solomon/async_io/ut/ut_helpers.cpp
@@ -51,7 +51,7 @@ void InitSink(
secureParams,
&actor.GetSinkCallbacks(),
counters,
- nullptr,
+ nullptr,
freeSpace);
actor.InitSink(dqSink, dqSinkAsActor);
@@ -98,7 +98,7 @@ NSo::NProto::TDqSolomonShard BuildSolomonShardSettings(bool isCloud) {
}
settings.SetClusterType(isCloud ? NSo::NProto::ESolomonClusterType::CT_MONITORING : NSo::NProto::ESolomonClusterType::CT_SOLOMON);
- settings.SetUseSsl(false);
+ settings.SetUseSsl(false);
FillDqSolomonScheme(*settings.MutableScheme());
diff --git a/ydb/library/yql/providers/solomon/expr_nodes/yql_solomon_expr_nodes.json b/ydb/library/yql/providers/solomon/expr_nodes/yql_solomon_expr_nodes.json
index d064daa1b4..2413c39dba 100644
--- a/ydb/library/yql/providers/solomon/expr_nodes/yql_solomon_expr_nodes.json
+++ b/ydb/library/yql/providers/solomon/expr_nodes/yql_solomon_expr_nodes.json
@@ -73,7 +73,7 @@
{"Index": 1, "Name": "Project", "Type": "TCoAtom"},
{"Index": 2, "Name": "Cluster", "Type": "TCoAtom"},
{"Index": 3, "Name": "Service", "Type": "TCoAtom"},
- {"Index": 4, "Name": "Token", "Type": "TCoSecureParam", "Optional": true}
+ {"Index": 4, "Name": "Token", "Type": "TCoSecureParam", "Optional": true}
]
},
{
diff --git a/ydb/library/yql/providers/solomon/proto/dq_solomon_shard.proto b/ydb/library/yql/providers/solomon/proto/dq_solomon_shard.proto
index 3bb9d19d51..71e0c5596b 100644
--- a/ydb/library/yql/providers/solomon/proto/dq_solomon_shard.proto
+++ b/ydb/library/yql/providers/solomon/proto/dq_solomon_shard.proto
@@ -9,7 +9,7 @@ enum ESolomonClusterType {
CT_MONITORING = 2;
}
-message TToken {
+message TToken {
string Name = 1;
}
@@ -32,10 +32,10 @@ message TDqSolomonShard {
string Service = 4;
ESolomonClusterType ClusterType = 20;
- bool UseSsl = 21;
+ bool UseSsl = 21;
TDqSolomonShardScheme Scheme = 30;
string ServiceAccount = 40;
- TToken Token = 41;
+ TToken Token = 41;
}
diff --git a/ydb/library/yql/providers/solomon/provider/yql_solomon_config.h b/ydb/library/yql/providers/solomon/provider/yql_solomon_config.h
index 941b2adc30..5badaab7b6 100644
--- a/ydb/library/yql/providers/solomon/provider/yql_solomon_config.h
+++ b/ydb/library/yql/providers/solomon/provider/yql_solomon_config.h
@@ -28,8 +28,8 @@ struct TSolomonConfiguration
clusters.push_back(cluster.GetName());
ClusterConfigs[cluster.GetName()] = cluster;
- const TString authToken = typeCtx->FindCredentialContent("cluster:default_" + cluster.GetName(), "default_solomon", cluster.GetToken());
- Tokens[cluster.GetName()] = ComposeStructuredTokenJsonForServiceAccount(cluster.GetServiceAccountId(), cluster.GetServiceAccountIdSignature(), authToken);
+ const TString authToken = typeCtx->FindCredentialContent("cluster:default_" + cluster.GetName(), "default_solomon", cluster.GetToken());
+ Tokens[cluster.GetName()] = ComposeStructuredTokenJsonForServiceAccount(cluster.GetServiceAccountId(), cluster.GetServiceAccountIdSignature(), authToken);
}
this->SetValidClusters(clusters);
diff --git a/ydb/library/yql/providers/solomon/provider/yql_solomon_dq_integration.cpp b/ydb/library/yql/providers/solomon/provider/yql_solomon_dq_integration.cpp
index 773c960991..3a8a2112c7 100644
--- a/ydb/library/yql/providers/solomon/provider/yql_solomon_dq_integration.cpp
+++ b/ydb/library/yql/providers/solomon/provider/yql_solomon_dq_integration.cpp
@@ -32,17 +32,17 @@ NSo::NProto::ESolomonClusterType MapClusterType(TSolomonClusterConfig::ESolomonC
}
}
-const TTypeAnnotationNode* GetItemType(const TExprNode& node) {
+const TTypeAnnotationNode* GetItemType(const TExprNode& node) {
const TTypeAnnotationNode* typeAnn = node.GetTypeAnn();
switch (typeAnn->GetKind()) {
case ETypeAnnotationKind::Flow:
- return typeAnn->Cast<TFlowExprType>()->GetItemType();
+ return typeAnn->Cast<TFlowExprType>()->GetItemType();
case ETypeAnnotationKind::Stream:
- return typeAnn->Cast<TStreamExprType>()->GetItemType();
+ return typeAnn->Cast<TStreamExprType>()->GetItemType();
default: break;
}
YQL_ENSURE(false, "Invalid solomon sink type " << typeAnn->GetKind());
- return nullptr;
+ return nullptr;
}
void FillScheme(const TTypeAnnotationNode& itemType, NSo::NProto::TDqSolomonShardScheme& scheme) {
@@ -132,13 +132,13 @@ public:
shardDesc.SetService(shard.Service().StringValue());
shardDesc.SetClusterType(MapClusterType(clusterDesc->GetClusterType()));
- shardDesc.SetUseSsl(clusterDesc->GetUseSsl());
+ shardDesc.SetUseSsl(clusterDesc->GetUseSsl());
- const TTypeAnnotationNode* itemType = GetItemType(node);
+ const TTypeAnnotationNode* itemType = GetItemType(node);
FillScheme(*itemType, *shardDesc.MutableScheme());
- if (auto maybeToken = shard.Token()) {
- shardDesc.MutableToken()->SetName(TString(maybeToken.Cast().Name().Value()));
+ if (auto maybeToken = shard.Token()) {
+ shardDesc.MutableToken()->SetName(TString(maybeToken.Cast().Name().Value()));
}
protoSettings.PackFrom(shardDesc);
diff --git a/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp b/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp
index 7ab55cfcfc..b9542c1679 100644
--- a/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp
+++ b/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.cpp
@@ -74,7 +74,7 @@ public:
ui64 inputIndex,
const TString& database,
const TString& endpoint,
- std::shared_ptr<::NYdb::ICredentialsProviderFactory> credentialsProviderFactory,
+ std::shared_ptr<::NYdb::ICredentialsProviderFactory> credentialsProviderFactory,
bool secure,
const TString& path,
::NYdb::TDriver driver,
@@ -88,7 +88,7 @@ public:
, Path(path), Columns(columns), KeyColumnTypes(keyColumnTypes)
, MaxRows(maxRowsInRequest), MaxBytes(maxBytesInRequest)
, EndKey(keyTo)
- , Connection(driver, ::NYdb::TCommonClientSettings().Database(database).DiscoveryEndpoint(endpoint).CredentialsProviderFactory(credentialsProviderFactory).DiscoveryMode(::NYdb::EDiscoveryMode::Async).EnableSsl(secure))
+ , Connection(driver, ::NYdb::TCommonClientSettings().Database(database).DiscoveryEndpoint(endpoint).CredentialsProviderFactory(credentialsProviderFactory).DiscoveryMode(::NYdb::EDiscoveryMode::Async).EnableSsl(secure))
, LastReadKey(keyFrom.empty() ? NKikimr::TSerializedCellVec::Serialize(TVector<NKikimr::TCell>(KeyColumnTypes.size())) : keyFrom)
, LastReadKeyInclusive(false)
, Retried(0U)
@@ -235,8 +235,8 @@ std::pair<NYql::NDq::IDqSourceActor*, IActor*> CreateYdbReadActor(
const THashMap<TString, TString>& secureParams,
const THashMap<TString, TString>& taskParams,
NYql::NDq::IDqSourceActor::ICallbacks* callback,
- ::NYdb::TDriver driver,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory)
+ ::NYdb::TDriver driver,
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory)
{
TString keyFrom, keyTo;
if (const auto taskParamsIt = taskParams.find("ydb"); taskParamsIt != taskParams.cend()) {
@@ -247,8 +247,8 @@ std::pair<NYql::NDq::IDqSourceActor*, IActor*> CreateYdbReadActor(
keyTo = range.Getto_key();
}
- auto token = secureParams.Value(params.GetToken(), TString{});
- auto credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(credentialsFactory, token, params.GetAddBearerToToken());
+ auto token = secureParams.Value(params.GetToken(), TString{});
+ auto credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(credentialsFactory, token, params.GetAddBearerToToken());
TVector<TString> columns;
columns.reserve(params.GetColumns().size());
for (auto i = 0; i < params.GetColumns().size(); ++i)
@@ -261,7 +261,7 @@ std::pair<NYql::NDq::IDqSourceActor*, IActor*> CreateYdbReadActor(
ui64 maxRowsInRequest = 0ULL;
ui64 maxBytesInRequest = 0ULL;
- const auto actor = new TYdbReadActor(inputIndex, params.GetDatabase(), params.GetEndpoint(), credentialsProviderFactory, params.GetSecure(), params.GetTable(), std::move(driver), callback, columns, keyColumnTypes, maxRowsInRequest, maxBytesInRequest, keyFrom, keyTo);
+ const auto actor = new TYdbReadActor(inputIndex, params.GetDatabase(), params.GetEndpoint(), credentialsProviderFactory, params.GetSecure(), params.GetTable(), std::move(driver), callback, columns, keyColumnTypes, maxRowsInRequest, maxBytesInRequest, keyFrom, keyTo);
return {actor, actor};
}
diff --git a/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.h b/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.h
index 67ff7ed699..7a0ff94573 100644
--- a/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.h
+++ b/ydb/library/yql/providers/ydb/actors/yql_ydb_read_actor.h
@@ -3,7 +3,7 @@
#include <ydb/library/yql/dq/actors/compute/dq_compute_actor_sources.h>
#include <ydb/library/yql/providers/common/token_accessor/client/factory.h>
#include <ydb/library/yql/providers/ydb/proto/source.pb.h>
-
+
#include <library/cpp/actors/core/actor.h>
#include <ydb/public/sdk/cpp/client/ydb_driver/driver.h>
@@ -15,7 +15,7 @@ std::pair<NYql::NDq::IDqSourceActor*, NActors::IActor*> CreateYdbReadActor(
const THashMap<TString, TString>& secureParams,
const THashMap<TString, TString>& taskParams,
NYql::NDq::IDqSourceActor::ICallbacks* callback,
- ::NYdb::TDriver driver,
- ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory);
+ ::NYdb::TDriver driver,
+ ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory);
} // namespace NYql::NDq
diff --git a/ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.cpp b/ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.cpp
index 022df27783..903c0788c5 100644
--- a/ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.cpp
+++ b/ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.cpp
@@ -5,7 +5,7 @@
namespace NYql::NDq {
-void RegisterYdbReadActorFactory(NYql::NDq::TDqSourceFactory& factory, ::NYdb::TDriver driver, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory) {
+void RegisterYdbReadActorFactory(NYql::NDq::TDqSourceFactory& factory, ::NYdb::TDriver driver, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory) {
factory.Register<NYql::NYdb::TSource>("YdbSource",
[driver, credentialsFactory](NYql::NYdb::TSource&& settings, IDqSourceActorFactory::TArguments&& args) {
return CreateYdbReadActor(std::move(settings), args.InputIndex, args.SecureParams, args.TaskParams, args.Callback, driver, credentialsFactory);
diff --git a/ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.h b/ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.h
index 6bf59880dd..0a56daad5c 100644
--- a/ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.h
+++ b/ydb/library/yql/providers/ydb/actors/yql_ydb_source_factory.h
@@ -1,14 +1,14 @@
#pragma once
#include <ydb/public/sdk/cpp/client/ydb_driver/driver.h>
-
+
#include <ydb/library/yql/dq/actors/compute/dq_compute_actor_io_actors_factory.h>
#include <ydb/library/yql/dq/actors/compute/dq_compute_actor_sources.h>
#include <ydb/library/yql/providers/common/token_accessor/client/factory.h>
-
+
namespace NYql::NDq {
-void RegisterYdbReadActorFactory(NYql::NDq::TDqSourceFactory& factory, NYdb::TDriver driver, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory);
+void RegisterYdbReadActorFactory(NYql::NDq::TDqSourceFactory& factory, NYdb::TDriver driver, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory);
}
diff --git a/ydb/library/yql/providers/ydb/comp_nodes/yql_kik_scan.cpp b/ydb/library/yql/providers/ydb/comp_nodes/yql_kik_scan.cpp
index 43343ab228..0515a9323e 100644
--- a/ydb/library/yql/providers/ydb/comp_nodes/yql_kik_scan.cpp
+++ b/ydb/library/yql/providers/ydb/comp_nodes/yql_kik_scan.cpp
@@ -258,13 +258,13 @@ public:
UdfTerminate((TString("Unable to get token ") += Token).c_str());
}
- auto parser = CreateStructuredTokenParser(token);
- if (!parser.HasIAMToken()) {
- UdfTerminate("Structured token does not contan YDB token");
- }
-
- token = parser.GetIAMToken();
-
+ auto parser = CreateStructuredTokenParser(token);
+ if (!parser.HasIAMToken()) {
+ UdfTerminate("Structured token does not contan YDB token");
+ }
+
+ token = parser.GetIAMToken();
+
const auto settings = NYdb::NClickhouseInternal::TScanSettings().SnapshotId(Snapshot);
const auto rows = Rows->GetValue(ctx).GetOrDefault<ui64>(0ULL);
diff --git a/ydb/library/yql/providers/ydb/proto/source.proto b/ydb/library/yql/providers/ydb/proto/source.proto
index 7e6c3e68b7..603243a4eb 100644
--- a/ydb/library/yql/providers/ydb/proto/source.proto
+++ b/ydb/library/yql/providers/ydb/proto/source.proto
@@ -11,5 +11,5 @@ message TSource {
bool Secure = 6;
repeated string Columns = 7;
repeated uint32 KeyColumnTypes = 8;
- bool AddBearerToToken = 9;
+ bool AddBearerToToken = 9;
}
diff --git a/ydb/library/yql/providers/ydb/provider/yql_ydb_dq_integration.cpp b/ydb/library/yql/providers/ydb/provider/yql_ydb_dq_integration.cpp
index ecb85e824b..d2012ad398 100644
--- a/ydb/library/yql/providers/ydb/provider/yql_ydb_dq_integration.cpp
+++ b/ydb/library/yql/providers/ydb/provider/yql_ydb_dq_integration.cpp
@@ -81,8 +81,8 @@ public:
if (const auto& maybeYdbReadTable = TMaybeNode<TYdbReadTable>(read)) {
const auto& ydbReadTable = maybeYdbReadTable.Cast();
const auto& clusterName = ydbReadTable.DataSource().Cluster().Value();
- const auto token = "cluster:default_" + TString(clusterName);
- YQL_CLOG(INFO, ProviderYdb) << "Wrap " << read->Content() << " with token: " << token;
+ const auto token = "cluster:default_" + TString(clusterName);
+ YQL_CLOG(INFO, ProviderYdb) << "Wrap " << read->Content() << " with token: " << token;
const auto rowType = ydbReadTable.Ref().GetTypeAnn()->Cast<TTupleExprType>()->GetItems().back()->Cast<TListExprType>()->GetItemType();
auto columns = ydbReadTable.Columns().Ptr();
@@ -99,7 +99,7 @@ public:
.Input<TYdbSourceSettings>()
.Table(ydbReadTable.Table())
.Token<TCoSecureParam>()
- .Name().Build(token)
+ .Name().Build(token)
.Build()
.Columns(std::move(columns))
.Build()
@@ -126,7 +126,7 @@ public:
srcDesc.SetDatabase(connect.Database);
srcDesc.SetEndpoint(connect.Endpoint);
srcDesc.SetSecure(connect.Secure);
- srcDesc.SetAddBearerToToken(connect.AddBearerToToken);
+ srcDesc.SetAddBearerToToken(connect.AddBearerToToken);
srcDesc.SetToken(token);
const auto& columns = settings.Columns();
diff --git a/ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp b/ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp
index 607b3ba7a8..682d4a7953 100644
--- a/ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp
+++ b/ydb/library/yql/providers/ydb/provider/yql_ydb_load_meta.cpp
@@ -146,16 +146,16 @@ public:
for (const auto& item : tablesFromCluster) {
const auto& cluster = item.first;
- TString token = State_->Configuration->Tokens.at(cluster);
+ TString token = State_->Configuration->Tokens.at(cluster);
const auto& config = State_->Configuration->Clusters[cluster];
- std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(State_->CredentialsFactory, token, config.AddBearerToToken);
+ std::shared_ptr<NYdb::ICredentialsProviderFactory> credentialsProviderFactory = CreateCredentialsProviderFactoryForStructuredToken(State_->CredentialsFactory, token, config.AddBearerToToken);
const auto ins = Clients_->emplace(cluster, std::pair<TMetaClient, std::optional<TCreateSnapshotHandleResult>>{{Driver_, NYdb::TCommonClientSettings()
.Database(config.Database)
.DiscoveryEndpoint(config.Endpoint)
.EnableSsl(config.Secure)
- .CredentialsProviderFactory(credentialsProviderFactory)
+ .CredentialsProviderFactory(credentialsProviderFactory)
.DiscoveryMode(NYdb::EDiscoveryMode::Async)}, std::nullopt});
YQL_CLOG(INFO, ProviderYdb) << "Take snapshot for: `" << cluster << "` from " << config.Endpoint;
diff --git a/ydb/library/yql/providers/ydb/provider/yql_ydb_provider.cpp b/ydb/library/yql/providers/ydb/provider/yql_ydb_provider.cpp
index d17e353d3e..5916c637eb 100644
--- a/ydb/library/yql/providers/ydb/provider/yql_ydb_provider.cpp
+++ b/ydb/library/yql/providers/ydb/provider/yql_ydb_provider.cpp
@@ -29,7 +29,7 @@ TDataProviderInitializer GetYdbDataProviderInitializer(
state->Types = typeCtx.Get();
state->FunctionRegistry = functionRegistry;
- state->CredentialsFactory = credentialsFactory;
+ state->CredentialsFactory = credentialsFactory;
state->DbResolver = dbResolverWithMeta;
if (gatewaysConfig) {
state->Configuration->Init(gatewaysConfig->GetYdb(), typeCtx, state->DbResolver, state->DatabaseIds);
diff --git a/ydb/library/yql/providers/ydb/provider/yql_ydb_provider.h b/ydb/library/yql/providers/ydb/provider/yql_ydb_provider.h
index ac9d00d145..890fad7034 100644
--- a/ydb/library/yql/providers/ydb/provider/yql_ydb_provider.h
+++ b/ydb/library/yql/providers/ydb/provider/yql_ydb_provider.h
@@ -32,7 +32,7 @@ struct TYdbState : public TThrRefBase
TTypeAnnotationContext* Types = nullptr;
TYdbConfiguration::TPtr Configuration = MakeIntrusive<TYdbConfiguration>();
const NKikimr::NMiniKQL::IFunctionRegistry* FunctionRegistry = nullptr;
- ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
+ ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
THashMap<std::pair<TString, NYq::DatabaseType>, NYq::TEvents::TDatabaseAuth> DatabaseIds;
std::shared_ptr<NYq::TDatabaseAsyncResolverWithMeta> DbResolver;
};
diff --git a/ydb/library/yql/providers/ydb/provider/yql_ydb_settings.cpp b/ydb/library/yql/providers/ydb/provider/yql_ydb_settings.cpp
index 06d1919027..ab8b642a45 100644
--- a/ydb/library/yql/providers/ydb/provider/yql_ydb_settings.cpp
+++ b/ydb/library/yql/providers/ydb/provider/yql_ydb_settings.cpp
@@ -34,7 +34,7 @@ void TYdbConfiguration::Init(
const auto& endpoint = config.GetDefaultEndpoint();
- for (const auto& cluster : config.GetClusterMapping()) {
+ for (const auto& cluster : config.GetClusterMapping()) {
this->Dispatch(cluster.GetName(), cluster.GetSettings());
if (dbResolver) {
@@ -51,11 +51,11 @@ void TYdbConfiguration::Init(
settings.DatabaseId = cluster.GetId();
if (cluster.HasSecure())
settings.Secure = cluster.GetSecure();
- if (cluster.HasAddBearerToToken())
- settings.AddBearerToToken = cluster.GetAddBearerToToken();
-
- const TString authToken = typeCtx->FindCredentialContent("cluster:default_" + cluster.GetName(), "default_ydb", cluster.GetToken());
- Tokens[cluster.GetName()] = ComposeStructuredTokenJsonForServiceAccount(cluster.GetServiceAccountId(), cluster.GetServiceAccountIdSignature(), authToken);
+ if (cluster.HasAddBearerToToken())
+ settings.AddBearerToToken = cluster.GetAddBearerToToken();
+
+ const TString authToken = typeCtx->FindCredentialContent("cluster:default_" + cluster.GetName(), "default_ydb", cluster.GetToken());
+ Tokens[cluster.GetName()] = ComposeStructuredTokenJsonForServiceAccount(cluster.GetServiceAccountId(), cluster.GetServiceAccountIdSignature(), authToken);
settings.Raw = cluster;
}
diff --git a/ydb/library/yql/providers/ydb/provider/yql_ydb_settings.h b/ydb/library/yql/providers/ydb/provider/yql_ydb_settings.h
index fc6fb03ced..1dc66146d5 100644
--- a/ydb/library/yql/providers/ydb/provider/yql_ydb_settings.h
+++ b/ydb/library/yql/providers/ydb/provider/yql_ydb_settings.h
@@ -21,7 +21,7 @@ struct TClusterMainSettings {
TString Database;
TString DatabaseId;
bool Secure = false;
- bool AddBearerToToken = false;
+ bool AddBearerToToken = false;
TYdbClusterConfig Raw;
};
diff --git a/ydb/library/yql/providers/ydb/ya.make b/ydb/library/yql/providers/ydb/ya.make
index a79e0f4cfc..f6530e1a37 100644
--- a/ydb/library/yql/providers/ydb/ya.make
+++ b/ydb/library/yql/providers/ydb/ya.make
@@ -1,7 +1,7 @@
RECURSE(
- actors
- comp_nodes
+ actors
+ comp_nodes
expr_nodes
- proto
+ proto
provider
)
diff --git a/ydb/library/yql/public/decimal/ut/yql_decimal_ut.cpp b/ydb/library/yql/public/decimal/ut/yql_decimal_ut.cpp
index 9c263c2b0b..203096d033 100644
--- a/ydb/library/yql/public/decimal/ut/yql_decimal_ut.cpp
+++ b/ydb/library/yql/public/decimal/ut/yql_decimal_ut.cpp
@@ -1,23 +1,23 @@
#include <ydb/library/yql/public/decimal/yql_decimal.h>
#include <ydb/library/yql/public/decimal/yql_decimal_serialize.h>
-
+
#include <library/cpp/testing/unittest/registar.h>
-
+
namespace NYql {
-namespace NDecimal {
+namespace NDecimal {
Y_UNIT_TEST_SUITE(TYqlDecimalTest) {
void SimplePositiveTest(TInt128 v, ui8 precision, ui8 scale, const TString& expected) {
- TString result = ToString(v, precision, scale);
- UNIT_ASSERT_VALUES_EQUAL(result, expected);
+ TString result = ToString(v, precision, scale);
+ UNIT_ASSERT_VALUES_EQUAL(result, expected);
TInt128 parsed = FromString(result, precision, scale);
UNIT_ASSERT(parsed == v);
- }
-
+ }
+
void SimpleNegativeFormatTest(TInt128 v, ui8 precision, ui8 scale) {
- TString result = ToString(v, precision, scale);
- UNIT_ASSERT_VALUES_EQUAL(result, "");
- }
-
+ TString result = ToString(v, precision, scale);
+ UNIT_ASSERT_VALUES_EQUAL(result, "");
+ }
+
void SimpleSerializeAndDeserialize(TInt128 v, size_t expectedSize) {
char buff[sizeof(TInt128)];
const auto s = Serialize(v, buff);
@@ -54,95 +54,95 @@ Y_UNIT_TEST_SUITE(TYqlDecimalTest) {
UNIT_ASSERT_VALUES_EQUAL(result, expected);
}
- Y_UNIT_TEST(TestZeroFormat) {
- UNIT_ASSERT_VALUES_EQUAL(ToString(0, 1, 0), "0");
- UNIT_ASSERT_VALUES_EQUAL(ToString(0, 15, 6), "0");
- UNIT_ASSERT_VALUES_EQUAL(ToString(0, 15, 0), "0");
- }
-
- Y_UNIT_TEST(TestZeroScale) {
- SimplePositiveTest(1, 5, 0, "1");
- SimplePositiveTest(10, 5, 0, "10");
- SimplePositiveTest(100, 5, 0, "100");
- SimplePositiveTest(1000, 5, 0, "1000");
- SimplePositiveTest(10000, 5, 0, "10000");
- SimpleNegativeFormatTest(100000, 5, 0);
- SimpleNegativeFormatTest(1000000, 5, 0);
-
- // negative numbers
- SimplePositiveTest(-1, 5, 0, "-1");
- SimplePositiveTest(-10, 5, 0, "-10");
- SimplePositiveTest(-100, 5, 0, "-100");
- SimplePositiveTest(-1000, 5, 0, "-1000");
- SimplePositiveTest(-10000, 5, 0, "-10000");
- SimpleNegativeFormatTest(-100000, 5, 0);
- }
-
- Y_UNIT_TEST(TestFormats) {
- // we have no trailing zeros
- SimplePositiveTest(1, 15, 6, "0.000001");
- SimplePositiveTest(10, 15, 6, "0.00001");
- SimplePositiveTest(100, 15, 6, "0.0001");
- SimplePositiveTest(1000, 15, 6, "0.001");
- SimplePositiveTest(10000, 15, 6, "0.01");
- SimplePositiveTest(100000, 15, 6, "0.1");
- SimplePositiveTest(1000000, 15, 6, "1");
- SimplePositiveTest(10000000, 15, 6, "10");
- SimplePositiveTest(100000000, 15, 6, "100");
-
+ Y_UNIT_TEST(TestZeroFormat) {
+ UNIT_ASSERT_VALUES_EQUAL(ToString(0, 1, 0), "0");
+ UNIT_ASSERT_VALUES_EQUAL(ToString(0, 15, 6), "0");
+ UNIT_ASSERT_VALUES_EQUAL(ToString(0, 15, 0), "0");
+ }
+
+ Y_UNIT_TEST(TestZeroScale) {
+ SimplePositiveTest(1, 5, 0, "1");
+ SimplePositiveTest(10, 5, 0, "10");
+ SimplePositiveTest(100, 5, 0, "100");
+ SimplePositiveTest(1000, 5, 0, "1000");
+ SimplePositiveTest(10000, 5, 0, "10000");
+ SimpleNegativeFormatTest(100000, 5, 0);
+ SimpleNegativeFormatTest(1000000, 5, 0);
+
+ // negative numbers
+ SimplePositiveTest(-1, 5, 0, "-1");
+ SimplePositiveTest(-10, 5, 0, "-10");
+ SimplePositiveTest(-100, 5, 0, "-100");
+ SimplePositiveTest(-1000, 5, 0, "-1000");
+ SimplePositiveTest(-10000, 5, 0, "-10000");
+ SimpleNegativeFormatTest(-100000, 5, 0);
+ }
+
+ Y_UNIT_TEST(TestFormats) {
+ // we have no trailing zeros
+ SimplePositiveTest(1, 15, 6, "0.000001");
+ SimplePositiveTest(10, 15, 6, "0.00001");
+ SimplePositiveTest(100, 15, 6, "0.0001");
+ SimplePositiveTest(1000, 15, 6, "0.001");
+ SimplePositiveTest(10000, 15, 6, "0.01");
+ SimplePositiveTest(100000, 15, 6, "0.1");
+ SimplePositiveTest(1000000, 15, 6, "1");
+ SimplePositiveTest(10000000, 15, 6, "10");
+ SimplePositiveTest(100000000, 15, 6, "100");
+
SimplePositiveTest(2020000, 15, 6, "2.02");
SimplePositiveTest(3003000, 15, 6, "3.003");
- // negative numbers
- SimplePositiveTest(-1, 15, 6, "-0.000001");
- SimplePositiveTest(-10, 15, 6, "-0.00001");
- SimplePositiveTest(-100, 15, 6, "-0.0001");
- SimplePositiveTest(-1000, 15, 6, "-0.001");
- SimplePositiveTest(-10000, 15, 6, "-0.01");
- SimplePositiveTest(-100000, 15, 6, "-0.1");
- SimplePositiveTest(-1000000, 15, 6, "-1");
- SimplePositiveTest(-10000000, 15, 6, "-10");
- SimplePositiveTest(-100000000, 15, 6, "-100");
-
+ // negative numbers
+ SimplePositiveTest(-1, 15, 6, "-0.000001");
+ SimplePositiveTest(-10, 15, 6, "-0.00001");
+ SimplePositiveTest(-100, 15, 6, "-0.0001");
+ SimplePositiveTest(-1000, 15, 6, "-0.001");
+ SimplePositiveTest(-10000, 15, 6, "-0.01");
+ SimplePositiveTest(-100000, 15, 6, "-0.1");
+ SimplePositiveTest(-1000000, 15, 6, "-1");
+ SimplePositiveTest(-10000000, 15, 6, "-10");
+ SimplePositiveTest(-100000000, 15, 6, "-100");
+
SimplePositiveTest(-2020000, 15, 6, "-2.02");
SimplePositiveTest(-3003000, 15, 6, "-3.003");
- SimplePositiveTest(1, 15, 6, "0.000001");
- SimplePositiveTest(12, 15, 6, "0.000012");
- SimplePositiveTest(123, 15, 6, "0.000123");
- SimplePositiveTest(1234, 15, 6, "0.001234");
- SimplePositiveTest(12345, 15, 6, "0.012345");
- SimplePositiveTest(123456, 15, 6, "0.123456");
- SimplePositiveTest(1234567, 15, 6, "1.234567");
- SimplePositiveTest(12345678, 15, 6, "12.345678");
- SimplePositiveTest(123456789, 15, 6, "123.456789");
- SimplePositiveTest(1234567898, 15, 6, "1234.567898");
- SimplePositiveTest(12345678987ll, 15, 6, "12345.678987");
- SimplePositiveTest(123456789876ll, 15, 6, "123456.789876");
- }
-
- Y_UNIT_TEST(TestHugeNumberFormat) {
+ SimplePositiveTest(1, 15, 6, "0.000001");
+ SimplePositiveTest(12, 15, 6, "0.000012");
+ SimplePositiveTest(123, 15, 6, "0.000123");
+ SimplePositiveTest(1234, 15, 6, "0.001234");
+ SimplePositiveTest(12345, 15, 6, "0.012345");
+ SimplePositiveTest(123456, 15, 6, "0.123456");
+ SimplePositiveTest(1234567, 15, 6, "1.234567");
+ SimplePositiveTest(12345678, 15, 6, "12.345678");
+ SimplePositiveTest(123456789, 15, 6, "123.456789");
+ SimplePositiveTest(1234567898, 15, 6, "1234.567898");
+ SimplePositiveTest(12345678987ll, 15, 6, "12345.678987");
+ SimplePositiveTest(123456789876ll, 15, 6, "123456.789876");
+ }
+
+ Y_UNIT_TEST(TestHugeNumberFormat) {
TInt128 max120 = Inf() - 1;
const char max120String[] = "99999999999999999999999999999999999"; // 35 digits
static_assert(sizeof(max120String) == 36, "sizeof(max120String) == 36");
SimplePositiveTest(max120, MaxPrecision, 0, max120String);
SimplePositiveTest(max120 + 1, MaxPrecision, 0, "inf");
-
+
TInt128 min120 = -Inf() + 1;
const char min120String[] = "-99999999999999999999999999999999999";
static_assert(sizeof(min120String) == 37, "sizeof(min120String) == 37");
SimplePositiveTest(min120, MaxPrecision, 0, min120String);
SimplePositiveTest(min120 - 1, MaxPrecision, 0, "-inf");
-
- // take spot for sign and zero before dot
+
+ // take spot for sign and zero before dot
const char min120StringAfterDot[] = "-0.99999999999999999999999999999999999"; // 35 by nine + leading zero
static_assert(sizeof(min120StringAfterDot) == 39, "sizeof(min120StringAfterDot) == 39");
SimplePositiveTest(min120, MaxPrecision, MaxPrecision, min120StringAfterDot);
-
+
SimpleNegativeFormatTest(1, MaxPrecision + 1, MaxPrecision + 1);
- SimpleNegativeFormatTest(1, MaxPrecision + 1, 0);
+ SimpleNegativeFormatTest(1, MaxPrecision + 1, 0);
SimpleNegativeFormatTest(1, 2, 3);
- }
+ }
Y_UNIT_TEST(TestFormStringRoundToEven) {
UNIT_ASSERT(FromString(".51", 1, 0) == 1);
@@ -340,7 +340,7 @@ Y_UNIT_TEST_SUITE(TYqlDecimalTest) {
CheckMul<35>("inf", "-inf", "-inf");
CheckMul<35>("inf", "nan", "nan");
}
-}
-
-}
-}
+}
+
+}
+}
diff --git a/ydb/library/yql/public/decimal/yql_decimal.cpp b/ydb/library/yql/public/decimal/yql_decimal.cpp
index 89fc92cd49..dc0615caba 100644
--- a/ydb/library/yql/public/decimal/yql_decimal.cpp
+++ b/ydb/library/yql/public/decimal/yql_decimal.cpp
@@ -38,9 +38,9 @@ bool IsComparable(TInt128 v) {
const char* ToString(TInt128 val, ui8 precision, ui8 scale) {
if (!precision || precision > MaxPrecision || scale > precision) {
- return nullptr;
- }
-
+ return nullptr;
+ }
+
if (val == Inf())
return "inf";
if (val == -Inf())
@@ -51,9 +51,9 @@ const char* ToString(TInt128 val, ui8 precision, ui8 scale) {
return "-nan";
if (!IsNormal(val)) {
- return nullptr;
- }
-
+ return nullptr;
+ }
+
if (!val) {
return "0";
}
@@ -61,8 +61,8 @@ const char* ToString(TInt128 val, ui8 precision, ui8 scale) {
const bool neg = val < 0;
TUint128 v = neg ? -val : val;
- // log_{10}(2^120) ~= 36.12, 37 decimal places
- // plus dot, zero before dot, sign and zero byte at the end
+ // log_{10}(2^120) ~= 36.12, 37 decimal places
+ // plus dot, zero before dot, sign and zero byte at the end
static thread_local char str[40];
auto end = str + sizeof(str);
*--end = 0;
@@ -70,41 +70,41 @@ const char* ToString(TInt128 val, ui8 precision, ui8 scale) {
auto s = end;
do {
- if (!precision--) {
+ if (!precision--) {
return nullptr;
- }
-
+ }
+
const auto digit = ui8(v % Ten);
if (digit || !scale || s != end) {
*--s = "0123456789"[digit];
- }
-
+ }
+
if (scale && !--scale && s != end) {
*--s = '.';
- }
+ }
} while (v /= Ten);
- if (scale) {
+ if (scale) {
do {
- if (!precision--) {
- return nullptr;
- }
-
- *--s = '0';
+ if (!precision--) {
+ return nullptr;
+ }
+
+ *--s = '0';
} while (--scale);
-
- *--s = '.';
- }
-
- if (*s == '.') {
- *--s = '0';
- }
-
- if (neg) {
+
+ *--s = '.';
+ }
+
+ if (*s == '.') {
+ *--s = '0';
+ }
+
+ if (neg) {
*--s = '-';
- }
-
+ }
+
return s;
}
diff --git a/ydb/library/yql/public/issue/yql_issue.h b/ydb/library/yql/public/issue/yql_issue.h
index 7b97674c9d..e64b1f86f2 100644
--- a/ydb/library/yql/public/issue/yql_issue.h
+++ b/ydb/library/yql/public/issue/yql_issue.h
@@ -163,10 +163,10 @@ public:
(size_t)CombineHashes((size_t)IntHash(static_cast<int>(IssueCode)), ComputeHash(Message)));
}
- TIssue& SetCode(TIssueCode id, ESeverity severity) {
+ TIssue& SetCode(TIssueCode id, ESeverity severity) {
IssueCode = id;
Severity = severity;
- return *this;
+ return *this;
}
ESeverity GetSeverity() const {
@@ -177,10 +177,10 @@ public:
return IssueCode;
}
- TIssue& AddSubIssue(TIntrusivePtr<TIssue> issue) {
+ TIssue& AddSubIssue(TIntrusivePtr<TIssue> issue) {
Severity = (ESeverity)Min((ui32)issue->GetSeverity(), (ui32)Severity);
Children_.push_back(issue);
- return *this;
+ return *this;
}
const TVector<TIntrusivePtr<TIssue>>& GetSubIssues() const {
@@ -225,12 +225,12 @@ public:
return *this;
}
- inline TIssues(TIssues&& rhs) : Issues_(std::move(rhs.Issues_))
+ inline TIssues(TIssues&& rhs) : Issues_(std::move(rhs.Issues_))
{
}
inline TIssues& operator=(TIssues&& rhs) {
- Issues_ = std::move(rhs.Issues_);
+ Issues_ = std::move(rhs.Issues_);
return *this;
}
diff --git a/ydb/library/yql/public/issue/yql_issue_manager.cpp b/ydb/library/yql/public/issue/yql_issue_manager.cpp
index 7375d2d30f..3914d3b299 100644
--- a/ydb/library/yql/public/issue/yql_issue_manager.cpp
+++ b/ydb/library/yql/public/issue/yql_issue_manager.cpp
@@ -168,8 +168,8 @@ TIssues TIssueManager::GetCompletedIssues() const {
}
res.AddIssues(CompletedIssues_);
return res;
-}
-
+}
+
void TIssueManager::AddIssues(const TIssues& issues) {
for (auto& issue: issues) {
if (auto p = CheckUniqAndLimit(issue)) {
diff --git a/ydb/library/yql/public/issue/yql_issue_manager_ut.cpp b/ydb/library/yql/public/issue/yql_issue_manager_ut.cpp
index 287f63fedd..58d9f52f0a 100644
--- a/ydb/library/yql/public/issue/yql_issue_manager_ut.cpp
+++ b/ydb/library/yql/public/issue/yql_issue_manager_ut.cpp
@@ -13,8 +13,8 @@ static std::function<TIssuePtr()> CreateScopeIssueFunction(TString name, ui32 co
Y_UNIT_TEST_SUITE(TIssueManagerTest) {
Y_UNIT_TEST(NoErrorNoLevelTest) {
TIssueManager issueManager;
- auto completedIssues = issueManager.GetCompletedIssues();
- UNIT_ASSERT_VALUES_EQUAL(completedIssues.Size(), 0);
+ auto completedIssues = issueManager.GetCompletedIssues();
+ UNIT_ASSERT_VALUES_EQUAL(completedIssues.Size(), 0);
auto issues = issueManager.GetIssues();
UNIT_ASSERT_VALUES_EQUAL(issues.Size(), 0);
}
@@ -22,8 +22,8 @@ Y_UNIT_TEST_SUITE(TIssueManagerTest) {
Y_UNIT_TEST(NoErrorOneLevelTest) {
TIssueManager issueManager;
issueManager.AddScope(CreateScopeIssueFunction("A", 0, 0));
- auto completedIssues = issueManager.GetCompletedIssues();
- UNIT_ASSERT_VALUES_EQUAL(completedIssues.Size(), 0);
+ auto completedIssues = issueManager.GetCompletedIssues();
+ UNIT_ASSERT_VALUES_EQUAL(completedIssues.Size(), 0);
issueManager.LeaveScope();
auto issues = issueManager.GetIssues();
UNIT_ASSERT_VALUES_EQUAL(issues.Size(), 0);
@@ -34,8 +34,8 @@ Y_UNIT_TEST_SUITE(TIssueManagerTest) {
issueManager.AddScope(CreateScopeIssueFunction("A", 0, 0));
issueManager.AddScope(CreateScopeIssueFunction("B", 1, 1));
issueManager.LeaveScope();
- auto completedIssues = issueManager.GetCompletedIssues();
- UNIT_ASSERT_VALUES_EQUAL(completedIssues.Size(), 0);
+ auto completedIssues = issueManager.GetCompletedIssues();
+ UNIT_ASSERT_VALUES_EQUAL(completedIssues.Size(), 0);
issueManager.LeaveScope();
auto issues = issueManager.GetIssues();
UNIT_ASSERT_VALUES_EQUAL(issues.Size(), 0);
@@ -44,15 +44,15 @@ Y_UNIT_TEST_SUITE(TIssueManagerTest) {
Y_UNIT_TEST(OneErrorOneLevelTest) {
TIssueManager issueManager;
issueManager.AddScope(CreateScopeIssueFunction("A", 0, 0));
- auto completedIssues1 = issueManager.GetCompletedIssues();
- UNIT_ASSERT_VALUES_EQUAL(completedIssues1.Size(), 0);
+ auto completedIssues1 = issueManager.GetCompletedIssues();
+ UNIT_ASSERT_VALUES_EQUAL(completedIssues1.Size(), 0);
issueManager.RaiseIssue(TIssue(TPosition(1,2), "IssueOne"));
- auto completedIssues2 = issueManager.GetCompletedIssues();
- UNIT_ASSERT_VALUES_EQUAL(completedIssues2.Size(), 0);
+ auto completedIssues2 = issueManager.GetCompletedIssues();
+ UNIT_ASSERT_VALUES_EQUAL(completedIssues2.Size(), 0);
issueManager.LeaveScope();
- auto completedIssues3 = issueManager.GetCompletedIssues();
- UNIT_ASSERT_VALUES_EQUAL(completedIssues3.Size(), 1);
-
+ auto completedIssues3 = issueManager.GetCompletedIssues();
+ UNIT_ASSERT_VALUES_EQUAL(completedIssues3.Size(), 1);
+
auto issues = issueManager.GetIssues();
UNIT_ASSERT_VALUES_EQUAL(issues.Size(), 1);
auto scopeIssue = issues.begin();
diff --git a/ydb/library/yql/public/udf/udf_helpers.h b/ydb/library/yql/public/udf/udf_helpers.h
index 2be9443559..b3c46453c7 100644
--- a/ydb/library/yql/public/udf/udf_helpers.h
+++ b/ydb/library/yql/public/udf/udf_helpers.h
@@ -42,7 +42,7 @@ namespace NUdf {
}
}
-#define UDF_IMPL_EX(udfName, typeBody, members, init, irResourceId, irFunctionName, create_impl) \
+#define UDF_IMPL_EX(udfName, typeBody, members, init, irResourceId, irFunctionName, create_impl) \
class udfName: public ::NYql::NUdf::TBoxedValue { \
public: \
explicit udfName(::NYql::NUdf::IFunctionTypeInfoBuilder& builder) \
@@ -78,7 +78,7 @@ namespace NUdf {
Y_UNUSED(userType); \
if (Name() == name) { \
typeBody if (!typesOnly) { \
- create_impl \
+ create_impl \
SetIRImplementation(builder, irResourceId, irFunctionName); \
} \
return true; \
@@ -94,9 +94,9 @@ namespace NUdf {
const ::NYql::NUdf::IValueBuilder* valueBuilder, \
const ::NYql::NUdf::TUnboxedValuePod* args) const
-#define UDF_IMPL(udfName, typeBody, members, init, irResourceId, irFunctionName) \
- UDF_IMPL_EX(udfName, typeBody, members, init, irResourceId, irFunctionName, builder.Implementation(new udfName(builder));)
-
+#define UDF_IMPL(udfName, typeBody, members, init, irResourceId, irFunctionName) \
+ UDF_IMPL_EX(udfName, typeBody, members, init, irResourceId, irFunctionName, builder.Implementation(new udfName(builder));)
+
#define UDF(udfName, typeBody) UDF_IMPL(udfName, typeBody, ;, ;, "", "")
#define UDF_RUN_IMPL(udfName, typeBody, members, init, irResourceId, irFunctionName) \
@@ -182,9 +182,9 @@ namespace NUdf {
#define SIMPLE_UDF_WITH_IR(udfName, signature, irResourceId, irFunctionName) \
UDF_IMPL(udfName, builder.SimpleSignature<signature>();, ;, ;, irResourceId, irFunctionName)
-#define SIMPLE_UDF_WITH_CREATE_IMPL(udfName, signature, create_impl) \
- UDF_IMPL_EX(udfName, builder.SimpleSignature<signature>();, ;, ;, "", "", create_impl)
-
+#define SIMPLE_UDF_WITH_CREATE_IMPL(udfName, signature, create_impl) \
+ UDF_IMPL_EX(udfName, builder.SimpleSignature<signature>();, ;, ;, "", "", create_impl)
+
#define SIMPLE_UDF_OPTIONS(udfName, signature, options) \
UDF(udfName, builder.SimpleSignature<signature>(); options;)
@@ -214,9 +214,9 @@ namespace NUdf {
template<bool CheckOptional, const char* TFuncName, template<class> class TFunc, typename... TUserTypes>
class TUserDataTypeFuncFactory : public ::NYql::NUdf::TBoxedValue {
public:
- typedef bool TTypeAwareMarker;
-
-public:
+ typedef bool TTypeAwareMarker;
+
+public:
static const ::NYql::NUdf::TStringRef& Name() {
static auto name = ::NYql::NUdf::TStringRef(TFuncName, std::strlen(TFuncName));
return name;
@@ -255,23 +255,23 @@ public:
::NYql::NUdf::IFunctionTypeInfoBuilder& builder,
bool typesOnly)
{
- if (Name() != name) {
- // the only case when we return false
+ if (Name() != name) {
+ // the only case when we return false
return false;
}
-
- if (!userType) {
- builder.SetError("User type is not specified");
- return true;
- }
-
+
+ if (!userType) {
+ builder.SetError("User type is not specified");
+ return true;
+ }
+
auto typeHelper = builder.TypeInfoHelper();
auto userTypeInspector = TTupleTypeInspector(*typeHelper, userType);
if (!userTypeInspector || userTypeInspector.GetElementsCount() < 1) {
builder.SetError("Missing or invalid user type");
- return true;
+ return true;
}
-
+
auto argsTypeInspector = TTupleTypeInspector(*typeHelper, userTypeInspector.GetElementType(0));
if (!argsTypeInspector || argsTypeInspector.GetElementsCount() < 1) {
builder.SetError("Missing or invalid user type arguments");
@@ -296,30 +296,30 @@ public:
auto typeId = dataTypeInspector.GetTypeId();
if (!DeclareSignatureImpl<TUserTypes...>(typeId, userType, builder, typesOnly)) {
- TStringBuilder sb;
+ TStringBuilder sb;
sb << "User type " << NYql::NUdf::GetDataTypeInfo(NYql::NUdf::GetDataSlot(typeId)).Name << " is not supported";
- builder.SetError(sb);
- }
-
- return true;
+ builder.SetError(sb);
+ }
+
+ return true;
}
};
template<typename... TUdfs>
class TSimpleUdfModuleHelper : public IUdfModule
{
- Y_HAS_SUBTYPE(TTypeAwareMarker);
-
+ Y_HAS_SUBTYPE(TTypeAwareMarker);
+
public:
void CleanupOnTerminate() const override {
}
template<typename TUdfType>
void GetAllFunctionsImpl(IFunctionNamesSink& names) const {
- auto r = names.Add(TUdfType::Name());
+ auto r = names.Add(TUdfType::Name());
if (THasTTypeAwareMarker<TUdfType>::value) {
- r->SetTypeAwareness();
- }
+ r->SetTypeAwareness();
+ }
}
template<typename THead1, typename THead2, typename... TTail>
diff --git a/ydb/library/yql/sql/cluster_mapping.cpp b/ydb/library/yql/sql/cluster_mapping.cpp
index 46271e5a77..4b64edfd33 100644
--- a/ydb/library/yql/sql/cluster_mapping.cpp
+++ b/ydb/library/yql/sql/cluster_mapping.cpp
@@ -1,34 +1,34 @@
-#include "cluster_mapping.h"
+#include "cluster_mapping.h"
#include <ydb/library/yql/providers/common/provider/yql_provider_names.h>
-
-using namespace NYql;
-
-namespace NSQLTranslation {
-TClusterMapping::TClusterMapping(const THashMap<TString, TString>& mapping) {
- for (const auto& p : mapping) {
- if (p.second == KikimrProviderName) {
- CaseSensitiveClusters.emplace(p);
- continue;
- }
-
- TString clusterLowerCase = to_lower(p.first);
- CaseInsensitiveClusters.emplace(clusterLowerCase, p.second);
- }
-}
-
-TMaybe<TString> TClusterMapping::GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const {
- auto providerPtr1 = CaseSensitiveClusters.FindPtr(cluster);
- if (providerPtr1) {
- normalizedClusterName = cluster;
- return *providerPtr1;
- }
-
- TString clusterLowerCase = to_lower(cluster);
- auto providerPtr2 = CaseInsensitiveClusters.FindPtr(clusterLowerCase);
- if (providerPtr2) {
- normalizedClusterName = clusterLowerCase;
- return *providerPtr2;
- }
- return Nothing();
-}
-}
+
+using namespace NYql;
+
+namespace NSQLTranslation {
+TClusterMapping::TClusterMapping(const THashMap<TString, TString>& mapping) {
+ for (const auto& p : mapping) {
+ if (p.second == KikimrProviderName) {
+ CaseSensitiveClusters.emplace(p);
+ continue;
+ }
+
+ TString clusterLowerCase = to_lower(p.first);
+ CaseInsensitiveClusters.emplace(clusterLowerCase, p.second);
+ }
+}
+
+TMaybe<TString> TClusterMapping::GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const {
+ auto providerPtr1 = CaseSensitiveClusters.FindPtr(cluster);
+ if (providerPtr1) {
+ normalizedClusterName = cluster;
+ return *providerPtr1;
+ }
+
+ TString clusterLowerCase = to_lower(cluster);
+ auto providerPtr2 = CaseInsensitiveClusters.FindPtr(clusterLowerCase);
+ if (providerPtr2) {
+ normalizedClusterName = clusterLowerCase;
+ return *providerPtr2;
+ }
+ return Nothing();
+}
+}
diff --git a/ydb/library/yql/sql/cluster_mapping.h b/ydb/library/yql/sql/cluster_mapping.h
index c2de216371..73328d8232 100644
--- a/ydb/library/yql/sql/cluster_mapping.h
+++ b/ydb/library/yql/sql/cluster_mapping.h
@@ -1,16 +1,16 @@
-#pragma once
-
-#include <util/generic/hash.h>
-#include <util/generic/maybe.h>
-
-namespace NSQLTranslation {
-class TClusterMapping {
-public:
- explicit TClusterMapping(const THashMap<TString, TString>& mapping);
- TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const;
-
-private:
- THashMap<TString, TString> CaseSensitiveClusters;
- THashMap<TString, TString> CaseInsensitiveClusters;
-};
-}
+#pragma once
+
+#include <util/generic/hash.h>
+#include <util/generic/maybe.h>
+
+namespace NSQLTranslation {
+class TClusterMapping {
+public:
+ explicit TClusterMapping(const THashMap<TString, TString>& mapping);
+ TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const;
+
+private:
+ THashMap<TString, TString> CaseSensitiveClusters;
+ THashMap<TString, TString> CaseInsensitiveClusters;
+};
+}
diff --git a/ydb/library/yql/sql/settings/translation_settings.h b/ydb/library/yql/sql/settings/translation_settings.h
index 0b9194a249..f9a3689997 100644
--- a/ydb/library/yql/sql/settings/translation_settings.h
+++ b/ydb/library/yql/sql/settings/translation_settings.h
@@ -56,7 +56,7 @@ namespace NSQLTranslation {
THashMap<TString, TString> ClusterMapping;
TString PathPrefix;
- // keys (cluster name) should be normalized
+ // keys (cluster name) should be normalized
THashMap<TString, TString> ClusterPathPrefixes;
THashMap<TString, TString> ModuleMapping;
THashSet<TString> Libraries;
diff --git a/ydb/library/yql/sql/v0/SQL.g b/ydb/library/yql/sql/v0/SQL.g
index 3b616b9c9f..f6b070895f 100644
--- a/ydb/library/yql/sql/v0/SQL.g
+++ b/ydb/library/yql/sql/v0/SQL.g
@@ -322,7 +322,7 @@ evaluate_if_stmt: EVALUATE IF expr do_stmt (ELSE do_stmt)?;
evaluate_for_stmt: EVALUATE FOR bind_parameter IN expr do_stmt (ELSE do_stmt)?;
table_ref: opt_id_prefix (table_key | id_expr LPAREN table_arg (COMMA table_arg)* RPAREN) table_hints?;
-table_key: id_table_or_at (COLON id_or_string)?;
+table_key: id_table_or_at (COLON id_or_string)?;
table_arg: AT? expr (COLON id_or_string)?;
table_hints: WITH (id_or_string | pure_column_list);
@@ -414,13 +414,13 @@ id: IDENTIFIER | keyword;
id_schema: IDENTIFIER | keyword_restricted;
id_expr: IDENTIFIER | keyword_compat | keyword_alter_uncompat | keyword_in_uncompat;
in_id_expr: IDENTIFIER | keyword_compat | keyword_alter_uncompat;
-id_table: IDENTIFIER | keyword_restricted;
-id_table_or_at: AT? id_table;
+id_table: IDENTIFIER | keyword_restricted;
+id_table_or_at: AT? id_table;
id_or_at: AT? id;
opt_id_prefix: (id_or_string DOT)?;
-keyword: keyword_restricted | keyword_alter_uncompat | keyword_table_uncompat;
+keyword: keyword_restricted | keyword_alter_uncompat | keyword_table_uncompat;
keyword_restricted: keyword_compat | keyword_expr_uncompat | keyword_select_uncompat | keyword_in_uncompat;
keyword_expr_uncompat:
@@ -447,11 +447,11 @@ keyword_expr_uncompat:
| WHERE
;
-keyword_table_uncompat:
+keyword_table_uncompat:
ERASE
| STREAM
-;
-
+;
+
keyword_select_uncompat:
ALL
| AS
diff --git a/ydb/library/yql/sql/v0/context.cpp b/ydb/library/yql/sql/v0/context.cpp
index a3a9013f2b..131e90b765 100644
--- a/ydb/library/yql/sql/v0/context.cpp
+++ b/ydb/library/yql/sql/v0/context.cpp
@@ -46,7 +46,7 @@ THashMap<TStringBuf, TPragmaField> CTX_PRAGMA_FIELDS = {
TContext::TContext(const NSQLTranslation::TTranslationSettings& settings,
TIssues& issues)
- : ClusterMapping(settings.ClusterMapping)
+ : ClusterMapping(settings.ClusterMapping)
, PathPrefix(settings.PathPrefix)
, ClusterPathPrefixes(settings.ClusterPathPrefixes)
, Settings(settings)
@@ -118,8 +118,8 @@ IOutputStream& TContext::MakeIssue(ESeverity severity, TIssueCode code, NYql::TP
} else if (action == EWarningAction::DISABLE) {
return Cnull;
}
- }
-
+ }
+
// we have the last cell for issue, let's fill it with our internal error
if (severity >= TSeverityIds::S_WARNING) {
const bool aboveHalf = Issues.Size() > Settings.MaxErrors / 2;
@@ -135,8 +135,8 @@ IOutputStream& TContext::MakeIssue(ESeverity severity, TIssueCode code, NYql::TP
if (Settings.MaxErrors <= Issues.Size()) {
ythrow NProtoAST::TTooManyErrors() << "Too many issues";
}
- }
-
+ }
+
Issues.AddIssue(TIssue(pos, TString()));
auto& curIssue = Issues.back();
curIssue.Severity = severity;
@@ -156,14 +156,14 @@ bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) {
return true;
}
- TString normalizedClusterName;
- if (!GetClusterProvider(*arg, normalizedClusterName)) {
- Error() << "Unknown cluster or provider: " << *arg;
+ TString normalizedClusterName;
+ if (!GetClusterProvider(*arg, normalizedClusterName)) {
+ Error() << "Unknown cluster or provider: " << *arg;
IncrementMonCounter("sql_errors", "BadPragmaValue");
return false;
}
- ClusterPathPrefixes[normalizedClusterName] = value;
+ ClusterPathPrefixes[normalizedClusterName] = value;
} else {
PathPrefix = value;
}
@@ -172,11 +172,11 @@ bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) {
}
TNodePtr TContext::GetPrefixedPath(const TString& cluster, const TDeferredAtom& path) {
- auto* clusterPrefix = ClusterPathPrefixes.FindPtr(cluster);
+ auto* clusterPrefix = ClusterPathPrefixes.FindPtr(cluster);
if (clusterPrefix && !clusterPrefix->empty()) {
return AddTablePathPrefix(*this, *clusterPrefix, path);
} else {
- auto provider = GetClusterProvider(cluster);
+ auto provider = GetClusterProvider(cluster);
YQL_ENSURE(provider.Defined());
auto* providerPrefix = ProviderPathPrefixes.FindPtr(*provider);
diff --git a/ydb/library/yql/sql/v0/context.h b/ydb/library/yql/sql/v0/context.h
index 45f40fae61..16fd951ca4 100644
--- a/ydb/library/yql/sql/v0/context.h
+++ b/ydb/library/yql/sql/v0/context.h
@@ -20,7 +20,7 @@ namespace NSQLTranslationV0 {
typedef TMap<TString, TNodePtr> TNamedNodesMap;
- class TContext {
+ class TContext {
public:
TContext(const NSQLTranslation::TTranslationSettings& settings,
NYql::TIssues& issues);
@@ -58,26 +58,26 @@ namespace NSQLTranslationV0 {
}
}
- bool HasCluster(const TString& cluster) const {
- return GetClusterProvider(cluster).Defined();
- }
-
+ bool HasCluster(const TString& cluster) const {
+ return GetClusterProvider(cluster).Defined();
+ }
+
TMaybe<TString> GetClusterProvider(const TString& cluster) const {
- TString unusedNormalizedClusterName;
- return GetClusterProvider(cluster, unusedNormalizedClusterName);
- }
-
- TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const {
- auto provider = ClusterMapping.GetClusterProvider(cluster, normalizedClusterName);
+ TString unusedNormalizedClusterName;
+ return GetClusterProvider(cluster, unusedNormalizedClusterName);
+ }
+
+ TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const {
+ auto provider = ClusterMapping.GetClusterProvider(cluster, normalizedClusterName);
if (!provider) {
if (Settings.AssumeYdbOnClusterWithSlash && cluster.StartsWith('/')) {
- normalizedClusterName = cluster;
+ normalizedClusterName = cluster;
return TString(NYql::KikimrProviderName);
}
return Nothing();
}
- return provider;
+ return provider;
}
TString GetServiceName(const ISource& source) const;
@@ -118,7 +118,7 @@ namespace NSQLTranslationV0 {
private:
NYql::TPosition Position;
THolder<TStringOutput> IssueMsgHolder;
- NSQLTranslation::TClusterMapping ClusterMapping;
+ NSQLTranslation::TClusterMapping ClusterMapping;
TString PathPrefix;
THashMap<TString, TString> ProviderPathPrefixes;
THashMap<TString, TString> ClusterPathPrefixes;
diff --git a/ydb/library/yql/sql/v0/list_builtin.cpp b/ydb/library/yql/sql/v0/list_builtin.cpp
index 64b016610d..b3fe59db1d 100644
--- a/ydb/library/yql/sql/v0/list_builtin.cpp
+++ b/ydb/library/yql/sql/v0/list_builtin.cpp
@@ -207,7 +207,7 @@ TNodePtr TListHasBuiltin::GetUpdateLambda() {
bool TListFold1Builtin::DoInit(TContext& ctx, ISource* src) {
if (Args.size() != 1) {
- ctx.Error(Pos) << "Folding list with " << OpName << " requires only one parameter";
+ ctx.Error(Pos) << "Folding list with " << OpName << " requires only one parameter";
return false;
}
if (!Args[0]->Init(ctx, src)) {
diff --git a/ydb/library/yql/sql/v0/node.cpp b/ydb/library/yql/sql/v0/node.cpp
index 57f0c6a561..c211b3e3c0 100644
--- a/ydb/library/yql/sql/v0/node.cpp
+++ b/ydb/library/yql/sql/v0/node.cpp
@@ -28,7 +28,7 @@ TString ErrorDistinctByGroupKey(const TString& column) {
TTableRef::TTableRef(const TString& refName, const TString& cluster, TNodePtr keys)
: RefName(refName)
- , Cluster(cluster)
+ , Cluster(cluster)
, Keys(keys)
{
}
@@ -2196,7 +2196,7 @@ public:
ui32 idx = 1;
TString cluster;
if (Ids.size() > 2) {
- cluster = Ids[idx].Name;
+ cluster = Ids[idx].Name;
++idx;
}
@@ -2204,8 +2204,8 @@ public:
return Nothing();
}
- TString normalizedClusterName;
- if (!cluster.empty() && !ctx.GetClusterProvider(cluster, normalizedClusterName)) {
+ TString normalizedClusterName;
+ if (!cluster.empty() && !ctx.GetClusterProvider(cluster, normalizedClusterName)) {
hasErrors = true;
ctx.Error() << "Unknown cluster: " << cluster;
return Nothing();
@@ -2216,7 +2216,7 @@ public:
return Nothing();
}
- return std::make_pair(normalizedClusterName, tableName);
+ return std::make_pair(normalizedClusterName, tableName);
}
TSourcePtr TryMakeSource(TContext& ctx, const TString& view, bool& hasErrors) {
diff --git a/ydb/library/yql/sql/v0/node.h b/ydb/library/yql/sql/v0/node.h
index 4c7cfc273b..bb1394b2b2 100644
--- a/ydb/library/yql/sql/v0/node.h
+++ b/ydb/library/yql/sql/v0/node.h
@@ -984,7 +984,7 @@ namespace NSQLTranslationV0 {
};
TSourcePtr BuildReduce(TPosition pos, ReduceMode mode, TSourcePtr source, TVector<TSortSpecificationPtr>&& orderBy,
TVector<TNodePtr>&& keys, TVector<TNodePtr>&& args, TNodePtr udf, TNodePtr having, const TWriteSettings& settings);
- TSourcePtr BuildProcess(TPosition pos, TSourcePtr source, TNodePtr with, TVector<TNodePtr>&& terms, bool listCall, bool stream, const TWriteSettings& settings);
+ TSourcePtr BuildProcess(TPosition pos, TSourcePtr source, TNodePtr with, TVector<TNodePtr>&& terms, bool listCall, bool stream, const TWriteSettings& settings);
TNodePtr BuildSelectResult(TPosition pos, TSourcePtr source, bool writeResult, bool inSubquery);
diff --git a/ydb/library/yql/sql/v0/query.cpp b/ydb/library/yql/sql/v0/query.cpp
index 7752b28b01..e086d836fc 100644
--- a/ydb/library/yql/sql/v0/query.cpp
+++ b/ydb/library/yql/sql/v0/query.cpp
@@ -53,8 +53,8 @@ public:
}
if (mode == ITableKeys::EBuildKeysMode::INPUT &&
IsQueryMode(ctx.Settings.Mode) &&
- ctx.GetClusterProvider(Cluster).GetRef() != "kikimr" &&
- ctx.GetClusterProvider(Cluster).GetRef() != "rtmr") {
+ ctx.GetClusterProvider(Cluster).GetRef() != "kikimr" &&
+ ctx.GetClusterProvider(Cluster).GetRef() != "rtmr") {
key = Y("MrTableConcat", key);
}
@@ -822,21 +822,21 @@ protected:
}
for (auto& cluster: *clusters) {
- TString normalizedClusterName;
- auto service = ctx.GetClusterProvider(cluster, normalizedClusterName);
+ TString normalizedClusterName;
+ auto service = ctx.GetClusterProvider(cluster, normalizedClusterName);
if (!service) {
ctx.Error(ctx.Pos()) << "Unknown cluster: " << cluster;
return false;
}
- auto sinkName = normalizedClusterName + "_sink";
+ auto sinkName = normalizedClusterName + "_sink";
auto op = ProduceOperation(ctx, sinkName, *service);
if (!op) {
return false;
}
- block = L(block, Y("let", sinkName, Y("DataSink", BuildQuotedAtom(Pos, *service), BuildQuotedAtom(Pos, normalizedClusterName))));
+ block = L(block, Y("let", sinkName, Y("DataSink", BuildQuotedAtom(Pos, *service), BuildQuotedAtom(Pos, normalizedClusterName))));
block = L(block, op);
}
@@ -1083,7 +1083,7 @@ public:
cluster = "$all";
serviceName = Prefix;
} else {
- serviceName = *ctx.GetClusterProvider(Prefix, cluster);
+ serviceName = *ctx.GetClusterProvider(Prefix, cluster);
}
auto datasource = Y("DataSource", BuildQuotedAtom(Pos, serviceName));
diff --git a/ydb/library/yql/sql/v0/select.cpp b/ydb/library/yql/sql/v0/select.cpp
index ef47023be1..219f1323bc 100644
--- a/ydb/library/yql/sql/v0/select.cpp
+++ b/ydb/library/yql/sql/v0/select.cpp
@@ -1660,17 +1660,17 @@ public:
TPosition pos,
TSourcePtr source,
TNodePtr with,
- TVector<TNodePtr>&& terms,
+ TVector<TNodePtr>&& terms,
bool listCall,
- bool stream,
+ bool stream,
const TWriteSettings& settings
)
: IRealSource(pos)
, Source(std::move(source))
, With(with)
- , Terms(std::move(terms))
+ , Terms(std::move(terms))
, ListCall(listCall)
- , Stream(stream)
+ , Stream(stream)
, Settings(settings)
{
}
@@ -1689,16 +1689,16 @@ public:
return false;
}
- if (Stream && !Source->IsStream()) {
- ctx.Error(Pos) << "PROCESS STREAM is unsupported for non-streaming sources";
- return false;
- }
-
- if (!Stream && Source->IsStream() && !ctx.PragmaDirectRead) {
- ctx.Error(Pos) << "PROCESS STREAM must be used for streaming sources";
- return false;
- }
-
+ if (Stream && !Source->IsStream()) {
+ ctx.Error(Pos) << "PROCESS STREAM is unsupported for non-streaming sources";
+ return false;
+ }
+
+ if (!Stream && Source->IsStream() && !ctx.PragmaDirectRead) {
+ ctx.Error(Pos) << "PROCESS STREAM must be used for streaming sources";
+ return false;
+ }
+
auto src = Source.Get();
if (!With) {
src->AllColumns();
@@ -1820,17 +1820,17 @@ public:
return false;
}
- bool IsStream() const override {
- return Stream;
- }
-
+ bool IsStream() const override {
+ return Stream;
+ }
+
TWriteSettings GetWriteSettings() const override {
return Settings;
}
TNodePtr DoClone() const final {
return new TProcessSource(Pos, Source->CloneSource(), SafeClone(With),
- CloneContainer(Terms), ListCall, Stream, Settings);
+ CloneContainer(Terms), ListCall, Stream, Settings);
}
private:
@@ -1857,7 +1857,7 @@ private:
TNodePtr TermsGround;
TVector<TNodePtr> Terms;
const bool ListCall;
- const bool Stream;
+ const bool Stream;
const TWriteSettings Settings;
};
@@ -1867,10 +1867,10 @@ TSourcePtr BuildProcess(
TNodePtr with,
TVector<TNodePtr>&& terms,
bool listCall,
- bool stream,
+ bool stream,
const TWriteSettings& settings
) {
- return new TProcessSource(pos, std::move(source), with, std::move(terms), listCall, stream, settings);
+ return new TProcessSource(pos, std::move(source), with, std::move(terms), listCall, stream, settings);
}
class TNestedProxySource: public IProxySource {
diff --git a/ydb/library/yql/sql/v0/sql.cpp b/ydb/library/yql/sql/v0/sql.cpp
index b028fc0439..f812d63e72 100644
--- a/ydb/library/yql/sql/v0/sql.cpp
+++ b/ydb/library/yql/sql/v0/sql.cpp
@@ -73,8 +73,8 @@ inline TIdentifier GetKeywordId(TTranslation& ctx, const TRule_keyword& node) {
return GetKeywordId(ctx, node.GetAlt_keyword1().GetRule_keyword_restricted1());
case TRule_keyword::kAltKeyword2:
return GetIdentifier(ctx, node.GetAlt_keyword2().GetRule_keyword_alter_uncompat1());
- case TRule_keyword::kAltKeyword3:
- return GetIdentifier(ctx, node.GetAlt_keyword3().GetRule_keyword_table_uncompat1());
+ case TRule_keyword::kAltKeyword3:
+ return GetIdentifier(ctx, node.GetAlt_keyword3().GetRule_keyword_table_uncompat1());
default:
Y_FAIL("You should change implementation according grammar changes");
}
@@ -116,24 +116,24 @@ static std::pair<bool, TString> Id(const TRule_id_or_at& node, TTranslation& ctx
return std::make_pair(hasAt, Id(node.GetRule_id2(), ctx) );
}
-static TString Id(const TRule_id_table& node, TTranslation& ctx) {
- // id_table: IDENTIFIER | keyword_restricted;
- switch (node.Alt_case()) {
- case TRule_id_table::kAltIdTable1:
- return ctx.Identifier(node.GetAlt_id_table1().GetToken1());
- case TRule_id_table::kAltIdTable2:
- return GetKeyword(ctx, node.GetAlt_id_table2().GetRule_keyword_restricted1());
- default:
- Y_FAIL("You should change implementation according grammar changes");
- }
-}
-
-static std::pair<bool, TString> Id(const TRule_id_table_or_at& node, TTranslation& ctx) {
- // id_table_or_at: AT? id_table;
- bool hasAt = node.HasBlock1();
- return std::make_pair(hasAt, Id(node.GetRule_id_table2(), ctx));
-}
-
+static TString Id(const TRule_id_table& node, TTranslation& ctx) {
+ // id_table: IDENTIFIER | keyword_restricted;
+ switch (node.Alt_case()) {
+ case TRule_id_table::kAltIdTable1:
+ return ctx.Identifier(node.GetAlt_id_table1().GetToken1());
+ case TRule_id_table::kAltIdTable2:
+ return GetKeyword(ctx, node.GetAlt_id_table2().GetRule_keyword_restricted1());
+ default:
+ Y_FAIL("You should change implementation according grammar changes");
+ }
+}
+
+static std::pair<bool, TString> Id(const TRule_id_table_or_at& node, TTranslation& ctx) {
+ // id_table_or_at: AT? id_table;
+ bool hasAt = node.HasBlock1();
+ return std::make_pair(hasAt, Id(node.GetRule_id_table2(), ctx));
+}
+
static TString Id(const TRule_id_expr& node, TTranslation& ctx) {
switch (node.Alt_case()) {
case TRule_id_expr::kAltIdExpr1:
@@ -190,16 +190,16 @@ static TString IdOrString(const TRule_id_or_string& node, TTranslation& ctx, boo
Y_FAIL("You should change implementation according grammar changes");
}
-static TString IdOrStringAsCluster(const TRule_id_or_string& node, TTranslation& ctx) {
- TString cluster = IdOrString(node, ctx);
- TString normalizedClusterName;
- if (!ctx.Context().GetClusterProvider(cluster, normalizedClusterName)) {
- ctx.Error() << "Unknown cluster: " << cluster;
- return {};
- }
- return normalizedClusterName;
-}
-
+static TString IdOrStringAsCluster(const TRule_id_or_string& node, TTranslation& ctx) {
+ TString cluster = IdOrString(node, ctx);
+ TString normalizedClusterName;
+ if (!ctx.Context().GetClusterProvider(cluster, normalizedClusterName)) {
+ ctx.Error() << "Unknown cluster: " << cluster;
+ return {};
+ }
+ return normalizedClusterName;
+}
+
static TString OptIdPrefixAsStr(const TRule_opt_id_prefix& node, TTranslation& ctx, const TString& defaultStr = {}) {
if (!node.HasBlock1()) {
return defaultStr;
@@ -207,13 +207,13 @@ static TString OptIdPrefixAsStr(const TRule_opt_id_prefix& node, TTranslation& c
return IdOrString(node.GetBlock1().GetRule_id_or_string1(), ctx);
}
-static TString OptIdPrefixAsClusterStr(const TRule_opt_id_prefix& node, TTranslation& ctx, const TString& defaultStr = {}) {
- if (!node.HasBlock1()) {
- return defaultStr;
- }
- return IdOrStringAsCluster(node.GetBlock1().GetRule_id_or_string1(), ctx);
-}
-
+static TString OptIdPrefixAsClusterStr(const TRule_opt_id_prefix& node, TTranslation& ctx, const TString& defaultStr = {}) {
+ if (!node.HasBlock1()) {
+ return defaultStr;
+ }
+ return IdOrStringAsCluster(node.GetBlock1().GetRule_id_or_string1(), ctx);
+}
+
static void PureColumnListStr(const TRule_pure_column_list& node, TTranslation& ctx, TVector<TString>& outList) {
outList.push_back(IdOrString(node.GetRule_id_or_string2(), ctx));
for (auto& block: node.GetBlock3()) {
@@ -388,7 +388,7 @@ static std::pair<TString, TString> TableKeyImpl(const std::pair<bool, TString>&
}
static std::pair<TString, TString> TableKeyImpl(const TRule_table_key& node, TTranslation& ctx) {
- auto nameWithAt(Id(node.GetRule_id_table_or_at1(), ctx));
+ auto nameWithAt(Id(node.GetRule_id_table_or_at1(), ctx));
TString view;
if (node.HasBlock2()) {
view = IdOrString(node.GetBlock2().GetRule_id_or_string2(), ctx);
@@ -465,10 +465,10 @@ static TTableRef SimpleTableRefImpl(const TRule_simple_table_ref& node, NSQLTran
switch (node.GetBlock1().Alt_case()) {
case TRule_simple_table_ref_TBlock1::AltCase::kAlt1: {
if (node.GetBlock1().GetAlt1().GetBlock1().HasRule_opt_id_prefix1()) {
- cluster = OptIdPrefixAsClusterStr(node.GetBlock1().GetAlt1().GetBlock1().GetRule_opt_id_prefix1(), ctx, ctx.Context().CurrCluster);
- if (!cluster && ctx.Context().CurrCluster) {
- return TTableRef(ctx.Context().MakeName("table"), ctx.Context().CurrCluster, nullptr);
- }
+ cluster = OptIdPrefixAsClusterStr(node.GetBlock1().GetAlt1().GetBlock1().GetRule_opt_id_prefix1(), ctx, ctx.Context().CurrCluster);
+ if (!cluster && ctx.Context().CurrCluster) {
+ return TTableRef(ctx.Context().MakeName("table"), ctx.Context().CurrCluster, nullptr);
+ }
}
tr.ConstructInPlace(ctx.Context().MakeName("table"), cluster.empty() ? ctx.Context().CurrCluster : cluster, nullptr);
@@ -908,10 +908,10 @@ TTableRef TSqlTranslation::TableRefImpl(const TRule_table_ref& node) {
Ctx.Error() << "Cluster should not be used in limited view";
return TTableRef(Ctx.MakeName("table"), Ctx.CurrCluster, nullptr);
}
- auto cluster = OptIdPrefixAsClusterStr(node.GetRule_opt_id_prefix1(), *this, Context().CurrCluster);
- if (!cluster) {
- return TTableRef(Ctx.MakeName("table"), Ctx.CurrCluster, nullptr);
- }
+ auto cluster = OptIdPrefixAsClusterStr(node.GetRule_opt_id_prefix1(), *this, Context().CurrCluster);
+ if (!cluster) {
+ return TTableRef(Ctx.MakeName("table"), Ctx.CurrCluster, nullptr);
+ }
TTableRef tr(Context().MakeName("table"), cluster, nullptr);
TPosition pos(Context().Pos());
@@ -2881,17 +2881,17 @@ bool TSqlSelect::SortSpecificationList(const TRule_sort_specification_list& node
TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteSettings& settings, TPosition& selectPos) {
// PROCESS STREAM? named_single_source (COMMA named_single_source)* (USING call_expr (AS id_or_string)?
- // (WHERE expr)? (HAVING expr)?)?
-
+ // (WHERE expr)? (HAVING expr)?)?
+
Token(node.GetToken1());
TPosition startPos(Ctx.Pos());
-
- const bool stream = node.HasBlock2();
+
+ const bool stream = node.HasBlock2();
if (!selectPos) {
selectPos = startPos;
}
- TSourcePtr source(NamedSingleSource(node.GetRule_named_single_source3()));
+ TSourcePtr source(NamedSingleSource(node.GetRule_named_single_source3()));
if (!source) {
return nullptr;
}
@@ -2909,7 +2909,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS
bool hasUsing = node.HasBlock5();
if (!hasUsing) {
- return BuildProcess(startPos, std::move(source), nullptr, {}, true, stream, settings);
+ return BuildProcess(startPos, std::move(source), nullptr, {}, true, stream, settings);
}
const auto& block5 = node.GetBlock5();
@@ -2921,7 +2921,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS
}
Ctx.IncrementMonCounter("sql_features", "ProcessWhere");
} else {
- Ctx.IncrementMonCounter("sql_features", stream ? "ProcessStream" : "Process");
+ Ctx.IncrementMonCounter("sql_features", stream ? "ProcessStream" : "Process");
}
if (block5.HasBlock5()) {
@@ -2979,7 +2979,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS
with->SetLabel(IdOrString(block5.GetBlock3().GetRule_id_or_string2(), *this));
}
- return BuildProcess(startPos, std::move(source), with, std::move(args), listCall, stream, settings);
+ return BuildProcess(startPos, std::move(source), with, std::move(args), listCall, stream, settings);
}
TSourcePtr TSqlSelect::ReduceCore(const TRule_reduce_core& node, const TWriteSettings& settings, TPosition& selectPos) {
@@ -4048,10 +4048,10 @@ TNodePtr TSqlIntoTable::Build(const TRule_into_table_stmt& node) {
if (tableRef.HasBlock1()) {
switch (tableRef.GetBlock1().Alt_case()) {
case TRule_simple_table_ref_TBlock1::AltCase::kAlt1: {
- cluster = OptIdPrefixAsClusterStr(tableRef.GetBlock1().GetAlt1().GetBlock1().GetRule_opt_id_prefix1(), *this, Ctx.CurrCluster);
- if (!cluster && Ctx.CurrCluster) {
- return nullptr;
- }
+ cluster = OptIdPrefixAsClusterStr(tableRef.GetBlock1().GetAlt1().GetBlock1().GetRule_opt_id_prefix1(), *this, Ctx.CurrCluster);
+ if (!cluster && Ctx.CurrCluster) {
+ return nullptr;
+ }
auto id = Id(tableRef.GetBlock1().GetAlt1().GetBlock1().GetRule_id_or_at2(), *this);
nameOrAt = std::make_pair(id.first, TDeferredAtom(Ctx.Pos(), id.second));
break;
@@ -4368,10 +4368,10 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
case TRule_sql_stmt_core::kAltSqlStmtCore6: {
const auto& rule = core.GetAlt_sql_stmt_core6().GetRule_use_stmt1();
Token(rule.GetToken1());
- Ctx.CurrCluster = IdOrStringAsCluster(rule.GetRule_id_or_string2(), *this);
- if (!Ctx.CurrCluster) {
- return false;
- }
+ Ctx.CurrCluster = IdOrStringAsCluster(rule.GetRule_id_or_string2(), *this);
+ if (!Ctx.CurrCluster) {
+ return false;
+ }
break;
}
case TRule_sql_stmt_core::kAltSqlStmtCore7: {
@@ -5236,7 +5236,7 @@ google::protobuf::Message* SqlAST(const TString& query, const TString& queryName
#endif
NSQLTranslation::TErrorCollectorOverIssues collector(err, maxErrors, "");
NProtoAST::TProtoASTBuilder<NALP::SQLParser, NALP::SQLLexer> builder(query, queryName, arena);
- return builder.BuildAST(collector);
+ return builder.BuildAST(collector);
}
google::protobuf::Message* SqlAST(const TString& query, const TString& queryName, NProtoAST::IErrorCollector& err, google::protobuf::Arena* arena) {
@@ -5256,15 +5256,15 @@ TAstNode* SqlASTToYql(const google::protobuf::Message& protoAst, TContext& ctx)
}
TSqlQuery query(ctx, ctx.Settings.Mode, true);
TNodePtr node(query.Build(static_cast<const TSQLParserAST&>(protoAst)));
- try {
- if (node && node->Init(ctx, nullptr)) {
- return node->Translate(ctx);
- }
- } catch (const NProtoAST::TTooManyErrors&) {
- // do not add error issue, no room for it
+ try {
+ if (node && node->Init(ctx, nullptr)) {
+ return node->Translate(ctx);
+ }
+ } catch (const NProtoAST::TTooManyErrors&) {
+ // do not add error issue, no room for it
}
-
- return nullptr;
+
+ return nullptr;
}
void SqlASTToYqlImpl(NYql::TAstParseResult& res, const google::protobuf::Message& protoAst,
@@ -5277,7 +5277,7 @@ void SqlASTToYqlImpl(NYql::TAstParseResult& res, const google::protobuf::Message
ctx.IncrementMonCounter("sql_errors", "AstToYqlError");
} else {
ctx.IncrementMonCounter("sql_errors", "AstToYqlSilentError");
- ctx.Error() << "Error occurred on parse SQL query, but no error is collected" <<
+ ctx.Error() << "Error occurred on parse SQL query, but no error is collected" <<
", please send this request over bug report into YQL interface or write on yql@ maillist";
}
}
diff --git a/ydb/library/yql/sql/v0/sql_ut.cpp b/ydb/library/yql/sql/v0/sql_ut.cpp
index 3a70aef93c..0287d74833 100644
--- a/ydb/library/yql/sql/v0/sql_ut.cpp
+++ b/ydb/library/yql/sql/v0/sql_ut.cpp
@@ -902,17 +902,17 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
Y_UNIT_TEST(StrayUTF8) {
/// 'c' in plato is russian here
- NYql::TAstParseResult res = SqlToYql("select * from сedar.Input");
+ NYql::TAstParseResult res = SqlToYql("select * from сedar.Input");
UNIT_ASSERT(!res.Root);
-
- TString a1 = Err2Str(res);
+
+ TString a1 = Err2Str(res);
TString a2(R"foo(<main>:1:14: Error: Unexpected character 'с' (Unicode character <1089>) : cannot match to any predicted input...
-
+
<main>:1:15: Error: Unexpected character : cannot match to any predicted input...
-
-)foo");
-
- UNIT_ASSERT_NO_DIFF(a1, a2);
+
+)foo");
+
+ UNIT_ASSERT_NO_DIFF(a1, a2);
}
Y_UNIT_TEST(IvalidStringLiteralWithEscapedBackslash) {
@@ -999,7 +999,7 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
Y_UNIT_TEST(SelectNoCluster) {
NYql::TAstParseResult res = SqlToYql("select foo from bar");
UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:1: Error: No cluster name given and no default cluster is selected\n");
+ UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:1: Error: No cluster name given and no default cluster is selected\n");
}
Y_UNIT_TEST(SelectDuplicateColumns) {
@@ -1196,13 +1196,13 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
}
Y_UNIT_TEST(UpsertValuesNoLabelsKikimr) {
- NYql::TAstParseResult res = SqlToYql("upsert into plato.Output values (1)", 10, TString(NYql::KikimrProviderName));
+ NYql::TAstParseResult res = SqlToYql("upsert into plato.Output values (1)", 10, TString(NYql::KikimrProviderName));
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:19: Error: UPSERT INTO ... VALUES requires specification of table columns\n");
}
Y_UNIT_TEST(ReplaceValuesNoLabelsKikimr) {
- NYql::TAstParseResult res = SqlToYql("replace into plato.Output values (1)", 10, TString(NYql::KikimrProviderName));
+ NYql::TAstParseResult res = SqlToYql("replace into plato.Output values (1)", 10, TString(NYql::KikimrProviderName));
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:20: Error: REPLACE INTO ... VALUES requires specification of table columns\n");
}
@@ -1501,7 +1501,7 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
}
Y_UNIT_TEST(InsertIntoWithTruncateKikimr) {
- NYql::TAstParseResult res = SqlToYql("INSERT INTO plato.Output WITH TRUNCATE SELECT key FROM plato.Input", 10, TString(NYql::KikimrProviderName));
+ NYql::TAstParseResult res = SqlToYql("INSERT INTO plato.Output WITH TRUNCATE SELECT key FROM plato.Input", 10, TString(NYql::KikimrProviderName));
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:0: Error: INSERT INTO WITH TRUNCATE is not supported for kikimr tables\n");
}
@@ -1513,7 +1513,7 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
}
Y_UNIT_TEST(UpsertWithWrongArgumentCount) {
- NYql::TAstParseResult res = SqlToYql("upsert into plato.Output (key, value, subkey) values (2, '3');", 10, TString(NYql::KikimrProviderName));
+ NYql::TAstParseResult res = SqlToYql("upsert into plato.Output (key, value, subkey) values (2, '3');", 10, TString(NYql::KikimrProviderName));
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:39: Error: VALUES have 2 columns, UPSERT INTO expects: 3\n");
}
@@ -1666,23 +1666,23 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:0: Error: IF EXISTS in DROP TABLE is not supported.\n");
}
-
+
Y_UNIT_TEST(TooManyErrors) {
- const char* q = R"(
- USE plato;
- $a1 = A;
- $a2 = DateTime::ToDate($a1, $a1);
- $a3 = DateTime::ToDate($a2, $a2);
- $a4 = DateTime::ToDate($a3, $a3);
-
- $s = (select b from plato.abc);
-
- select $a4 from $s;
-)";
-
- NYql::TAstParseResult res = SqlToYql(q, 10);
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res),
+ const char* q = R"(
+ USE plato;
+ $a1 = A;
+ $a2 = DateTime::ToDate($a1, $a1);
+ $a3 = DateTime::ToDate($a2, $a2);
+ $a4 = DateTime::ToDate($a3, $a3);
+
+ $s = (select b from plato.abc);
+
+ select $a4 from $s;
+)";
+
+ NYql::TAstParseResult res = SqlToYql(q, 10);
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res),
R"(<main>:3:15: Error: Column A is not in source column set. Did you mean b?
<main>:3:15: Error: Column A is not in source column set. Did you mean b?
<main>:3:15: Error: Column A is not in source column set. Did you mean b?
@@ -1693,8 +1693,8 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
<main>:3:15: Error: Column A is not in source column set. Did you mean b?
<main>:3:15: Error: Column A is not in source column set. Did you mean b?
<main>: Error: Too many issues, code: 1
-)");
- }
+)");
+ }
Y_UNIT_TEST(ShouldCloneBindingForNamedParameter) {
NYql::TAstParseResult res = SqlToYql(R"(
@@ -1721,24 +1721,24 @@ select FormatType($f());
UNIT_ASSERT(res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:51: Warning: Column names in SELECT don't match column specification in parenthesis. \"key\" doesn't match \"Key\". \"new_value\" doesn't match \"value\", code: 4517\n");
}
-
- Y_UNIT_TEST(YtCaseInsensitive) {
- NYql::TAstParseResult res = SqlToYql("select * from PlatO.foo;");
- UNIT_ASSERT(res.Root);
-
- res = SqlToYql("use PlatO; select * from foo;");
- UNIT_ASSERT(res.Root);
- }
-
- Y_UNIT_TEST(KikimrCaseSensitive) {
- NYql::TAstParseResult res = SqlToYql("select * from PlatO.foo;", 10, "kikimr");
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res), R"(<main>:1:15: Error: Unknown cluster: PlatO
-<main>:1:15: Error: No cluster name given and no default cluster is selected
-)");
-
- res = SqlToYql("use PlatO; select * from foo;", 10, "kikimr");
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:5: Error: Unknown cluster: PlatO\n");
- }
+
+ Y_UNIT_TEST(YtCaseInsensitive) {
+ NYql::TAstParseResult res = SqlToYql("select * from PlatO.foo;");
+ UNIT_ASSERT(res.Root);
+
+ res = SqlToYql("use PlatO; select * from foo;");
+ UNIT_ASSERT(res.Root);
+ }
+
+ Y_UNIT_TEST(KikimrCaseSensitive) {
+ NYql::TAstParseResult res = SqlToYql("select * from PlatO.foo;", 10, "kikimr");
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res), R"(<main>:1:15: Error: Unknown cluster: PlatO
+<main>:1:15: Error: No cluster name given and no default cluster is selected
+)");
+
+ res = SqlToYql("use PlatO; select * from foo;", 10, "kikimr");
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:5: Error: Unknown cluster: PlatO\n");
+ }
}
diff --git a/ydb/library/yql/sql/v1/SQLv1.g.in b/ydb/library/yql/sql/v1/SQLv1.g.in
index ef394c7a00..89e1194497 100644
--- a/ydb/library/yql/sql/v1/SQLv1.g.in
+++ b/ydb/library/yql/sql/v1/SQLv1.g.in
@@ -798,7 +798,7 @@ keyword_expr_uncompat:
| JSON_EXISTS
| JSON_VALUE
| JSON_QUERY
- | LOCAL
+ | LOCAL
| NOT
| NULL
| PROCESS
@@ -811,12 +811,12 @@ keyword_expr_uncompat:
| WHERE
;
-keyword_table_uncompat:
+keyword_table_uncompat:
ANY
| ERASE
| STREAM
-;
-
+;
+
keyword_select_uncompat:
ALL
| AS
diff --git a/ydb/library/yql/sql/v1/builtin.cpp b/ydb/library/yql/sql/v1/builtin.cpp
index 43ef1243f1..3e36a31c06 100644
--- a/ydb/library/yql/sql/v1/builtin.cpp
+++ b/ydb/library/yql/sql/v1/builtin.cpp
@@ -480,7 +480,7 @@ public:
return false;
}
- Args[1] = BuildQuotedAtom(Args[1]->GetPos(), *literal);
+ Args[1] = BuildQuotedAtom(Args[1]->GetPos(), *literal);
} else {
if (Service.empty()) {
ctx.Error(GetPos()) << GetOpName() << " requires either one of \"yt\"/\"kikimr\"/\"rtmr\" as second argument or current cluster name";
diff --git a/ydb/library/yql/sql/v1/context.cpp b/ydb/library/yql/sql/v1/context.cpp
index c08fe96cae..3ea9ea097b 100644
--- a/ydb/library/yql/sql/v1/context.cpp
+++ b/ydb/library/yql/sql/v1/context.cpp
@@ -67,7 +67,7 @@ THashMap<TStringBuf, TPragmaMaybeField> CTX_PRAGMA_MAYBE_FIELDS = {
TContext::TContext(const NSQLTranslation::TTranslationSettings& settings,
TIssues& issues)
- : ClusterMapping(settings.ClusterMapping)
+ : ClusterMapping(settings.ClusterMapping)
, PathPrefix(settings.PathPrefix)
, ClusterPathPrefixes(settings.ClusterPathPrefixes)
, Settings(settings)
@@ -171,8 +171,8 @@ IOutputStream& TContext::MakeIssue(ESeverity severity, TIssueCode code, NYql::TP
} else if (action == EWarningAction::DISABLE) {
return Cnull;
}
- }
-
+ }
+
// we have the last cell for issue, let's fill it with our internal error
if (severity >= TSeverityIds::S_WARNING) {
const bool aboveHalf = Issues.Size() > Settings.MaxErrors / 2;
@@ -188,8 +188,8 @@ IOutputStream& TContext::MakeIssue(ESeverity severity, TIssueCode code, NYql::TP
if (Settings.MaxErrors <= Issues.Size()) {
ythrow NProtoAST::TTooManyErrors() << "Too many issues";
}
- }
-
+ }
+
Issues.AddIssue(TIssue(pos, TString()));
auto& curIssue = Issues.back();
curIssue.Severity = severity;
@@ -209,14 +209,14 @@ bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) {
return true;
}
- TString normalizedClusterName;
- if (!GetClusterProvider(*arg, normalizedClusterName)) {
- Error() << "Unknown cluster or provider: " << *arg;
+ TString normalizedClusterName;
+ if (!GetClusterProvider(*arg, normalizedClusterName)) {
+ Error() << "Unknown cluster or provider: " << *arg;
IncrementMonCounter("sql_errors", "BadPragmaValue");
return false;
}
- ClusterPathPrefixes[normalizedClusterName] = value;
+ ClusterPathPrefixes[normalizedClusterName] = value;
} else {
PathPrefix = value;
}
@@ -225,7 +225,7 @@ bool TContext::SetPathPrefix(const TString& value, TMaybe<TString> arg) {
}
TNodePtr TContext::GetPrefixedPath(const TString& service, const TDeferredAtom& cluster, const TDeferredAtom& path) {
- auto* clusterPrefix = cluster.GetLiteral() ? ClusterPathPrefixes.FindPtr(*cluster.GetLiteral()) : nullptr;
+ auto* clusterPrefix = cluster.GetLiteral() ? ClusterPathPrefixes.FindPtr(*cluster.GetLiteral()) : nullptr;
if (clusterPrefix && !clusterPrefix->empty()) {
return AddTablePathPrefix(*this, *clusterPrefix, path);
} else {
@@ -287,10 +287,10 @@ TString TContext::AddSimpleUdf(const TString& udf) {
return name;
}
-void TContext::SetPackageVersion(const TString& packageName, ui32 version) {
- PackageVersions[packageName] = version;
-}
-
+void TContext::SetPackageVersion(const TString& packageName, ui32 version) {
+ PackageVersions[packageName] = version;
+}
+
void TScopedState::UseCluster(const TString& service, const TDeferredAtom& cluster) {
YQL_ENSURE(!cluster.Empty());
if (cluster.GetLiteral()) {
diff --git a/ydb/library/yql/sql/v1/context.h b/ydb/library/yql/sql/v1/context.h
index 8951757486..21b9693495 100644
--- a/ydb/library/yql/sql/v1/context.h
+++ b/ydb/library/yql/sql/v1/context.h
@@ -21,10 +21,10 @@ namespace NSQLTranslationV1 {
return name == "$_";
}
- inline bool IsStreamingService(const TString& service) {
- return service == NYql::RtmrProviderName || service == NYql::PqProviderName;
- }
-
+ inline bool IsStreamingService(const TString& service) {
+ return service == NYql::RtmrProviderName || service == NYql::PqProviderName;
+ }
+
struct TNodeWithUsageInfo : public TThrRefBase {
explicit TNodeWithUsageInfo(const TNodePtr& node, TPosition namePos, int level)
: Node(node)
@@ -76,7 +76,7 @@ namespace NSQLTranslationV1 {
AsStringLiteral,
};
- class TContext {
+ class TContext {
public:
TContext(const NSQLTranslation::TTranslationSettings& settings,
NYql::TIssues& issues);
@@ -116,26 +116,26 @@ namespace NSQLTranslationV1 {
}
}
- bool HasCluster(const TString& cluster) const {
- return GetClusterProvider(cluster).Defined();
- }
-
+ bool HasCluster(const TString& cluster) const {
+ return GetClusterProvider(cluster).Defined();
+ }
+
TMaybe<TString> GetClusterProvider(const TString& cluster) const {
- TString unusedNormalizedClusterName;
- return GetClusterProvider(cluster, unusedNormalizedClusterName);
- }
-
- TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const {
- auto provider = ClusterMapping.GetClusterProvider(cluster, normalizedClusterName);
+ TString unusedNormalizedClusterName;
+ return GetClusterProvider(cluster, unusedNormalizedClusterName);
+ }
+
+ TMaybe<TString> GetClusterProvider(const TString& cluster, TString& normalizedClusterName) const {
+ auto provider = ClusterMapping.GetClusterProvider(cluster, normalizedClusterName);
if (!provider) {
if (Settings.AssumeYdbOnClusterWithSlash && cluster.StartsWith('/')) {
- normalizedClusterName = cluster;
+ normalizedClusterName = cluster;
return TString(NYql::KikimrProviderName);
}
return Nothing();
}
- return provider;
+ return provider;
}
bool HasNonYtProvider(const ISource& source) const;
@@ -161,9 +161,9 @@ namespace NSQLTranslationV1 {
bool AddExport(TPosition symbolPos, const TString& symbolName);
TString AddImport(const TVector<TString>& modulePath);
TString AddSimpleUdf(const TString& udf);
- void SetPackageVersion(const TString& packageName, ui32 version);
+ void SetPackageVersion(const TString& packageName, ui32 version);
- bool IsStreamingService(const TStringBuf service) const;
+ bool IsStreamingService(const TStringBuf service) const;
bool CheckColumnReference(TPosition pos, const TString& name) {
const bool allowed = GetColumnReferenceState() != EColumnRefState::Deny;
@@ -188,7 +188,7 @@ namespace NSQLTranslationV1 {
private:
NYql::TPosition Position;
THolder<TStringOutput> IssueMsgHolder;
- NSQLTranslation::TClusterMapping ClusterMapping;
+ NSQLTranslation::TClusterMapping ClusterMapping;
TString PathPrefix;
THashMap<TString, TString> ProviderPathPrefixes;
THashMap<TString, TString> ClusterPathPrefixes;
@@ -255,9 +255,9 @@ namespace NSQLTranslationV1 {
// if FlexibleTypes=true, emit TypeOrMember callable and resolve Type/Column uncertainty on type annotation stage, otherwise always emit Type
bool FlexibleTypes = false;
THashMap<TString, TMaybe<TString>> Libraries; // alias -> optional file
- THashMap<TString, ui32> PackageVersions;
+ THashMap<TString, ui32> PackageVersions;
NYql::TWarningPolicy WarningPolicy;
- TString PqReadByRtmrCluster;
+ TString PqReadByRtmrCluster;
};
class TColumnRefScope {
diff --git a/ydb/library/yql/sql/v1/join.cpp b/ydb/library/yql/sql/v1/join.cpp
index 29f5b3ec4b..9930541637 100644
--- a/ydb/library/yql/sql/v1/join.cpp
+++ b/ydb/library/yql/sql/v1/join.cpp
@@ -196,10 +196,10 @@ public:
JoinLinkSettings.push_back(linkSettings);
}
- bool IsStream() const override {
- return AnyOf(Sources, [] (const TSourcePtr& s) { return s->IsStream(); });
- }
-
+ bool IsStream() const override {
+ return AnyOf(Sources, [] (const TSourcePtr& s) { return s->IsStream(); });
+ }
+
protected:
static TString FullColumnName(const TColumnNode& column) {
auto sourceName = *column.GetSourceName();
diff --git a/ydb/library/yql/sql/v1/node.cpp b/ydb/library/yql/sql/v1/node.cpp
index 870bbd9cc7..7e8c96dbef 100644
--- a/ydb/library/yql/sql/v1/node.cpp
+++ b/ydb/library/yql/sql/v1/node.cpp
@@ -1380,7 +1380,7 @@ bool ISource::AddExpressions(TContext& ctx, const TVector<TNodePtr>& expressions
if (auto sessionWindow = dynamic_cast<TSessionWindow*>(expr.Get())) {
if (SessionWindow) {
ctx.Error(expr->GetPos()) << "Duplicate session window specification:";
- ctx.Error(SessionWindow->GetPos()) << "Previous session window is declared here";
+ ctx.Error(SessionWindow->GetPos()) << "Previous session window is declared here";
return false;
}
SessionWindow = expr;
@@ -3338,7 +3338,7 @@ TSourcePtr TryMakeSourceFromExpression(TContext& ctx, const TString& currService
TNodePtr tableKey = BuildTableKey(node->GetPos(), currService, currCluster, TDeferredAtom(node->GetPos(), *literal), view);
TTableRef table(ctx.MakeName("table"), currService, currCluster, tableKey);
table.Options = BuildInputOptions(node->GetPos(), GetContextHints(ctx));
- return BuildTableSource(node->GetPos(), table);
+ return BuildTableSource(node->GetPos(), table);
}
if (dynamic_cast<TLambdaNode*>(node.Get())) {
@@ -3350,7 +3350,7 @@ TSourcePtr TryMakeSourceFromExpression(TContext& ctx, const TString& currService
TNodePtr tableKey = BuildTableKey(node->GetPos(), currService, currCluster, TDeferredAtom(wrappedNode, ctx), view);
TTableRef table(ctx.MakeName("table"), currService, currCluster, tableKey);
table.Options = BuildInputOptions(node->GetPos(), GetContextHints(ctx));
- return BuildTableSource(node->GetPos(), table);
+ return BuildTableSource(node->GetPos(), table);
}
void MakeTableFromExpression(TContext& ctx, TNodePtr node, TDeferredAtom& table) {
diff --git a/ydb/library/yql/sql/v1/node.h b/ydb/library/yql/sql/v1/node.h
index de82b45a23..e1a8a106be 100644
--- a/ydb/library/yql/sql/v1/node.h
+++ b/ydb/library/yql/sql/v1/node.h
@@ -1262,7 +1262,7 @@ namespace NSQLTranslationV1 {
TSourcePtr BuildMuxSource(TPosition pos, TVector<TSourcePtr>&& sources);
TSourcePtr BuildFakeSource(TPosition pos, bool missingFrom = false);
TSourcePtr BuildNodeSource(TPosition pos, const TNodePtr& node, bool wrapToList = false);
- TSourcePtr BuildTableSource(TPosition pos, const TTableRef& table, const TString& label = TString());
+ TSourcePtr BuildTableSource(TPosition pos, const TTableRef& table, const TString& label = TString());
TSourcePtr BuildInnerSource(TPosition pos, TNodePtr node, const TString& service, const TDeferredAtom& cluster, const TString& label = TString());
TSourcePtr BuildRefColumnSource(TPosition pos, const TString& partExpression);
TSourcePtr BuildUnionAll(TPosition pos, TVector<TSourcePtr>&& sources, const TWriteSettings& settings);
@@ -1287,7 +1287,7 @@ namespace NSQLTranslationV1 {
TVector<TNodePtr>&& terms,
bool distinct,
TVector<TNodePtr>&& without,
- bool selectStream,
+ bool selectStream,
const TWriteSettings& settings
);
TSourcePtr BuildSelect(TPosition pos, TSourcePtr source, TNodePtr skipTake);
@@ -1301,7 +1301,7 @@ namespace NSQLTranslationV1 {
TVector<TNodePtr>&& keys, TVector<TNodePtr>&& args, TNodePtr udf, TNodePtr having, const TWriteSettings& settings,
const TVector<TSortSpecificationPtr>& assumeOrderBy, bool listCall);
TSourcePtr BuildProcess(TPosition pos, TSourcePtr source, TNodePtr with, bool withExtFunction, TVector<TNodePtr>&& terms, bool listCall,
- bool prcessStream, const TWriteSettings& settings, const TVector<TSortSpecificationPtr>& assumeOrderBy);
+ bool prcessStream, const TWriteSettings& settings, const TVector<TSortSpecificationPtr>& assumeOrderBy);
TNodePtr BuildSelectResult(TPosition pos, TSourcePtr source, bool writeResult, bool inSubquery, TScopedStatePtr scoped);
diff --git a/ydb/library/yql/sql/v1/query.cpp b/ydb/library/yql/sql/v1/query.cpp
index 725356b9f5..5e3f8918e3 100644
--- a/ydb/library/yql/sql/v1/query.cpp
+++ b/ydb/library/yql/sql/v1/query.cpp
@@ -1602,10 +1602,10 @@ public:
Add(node);
}
- for (const auto& p : ctx.PackageVersions) {
- Add(Y("set_package_version", BuildQuotedAtom(Pos, p.first), BuildQuotedAtom(Pos, ToString(p.second))));
- }
-
+ for (const auto& p : ctx.PackageVersions) {
+ Add(Y("set_package_version", BuildQuotedAtom(Pos, p.first), BuildQuotedAtom(Pos, ToString(p.second))));
+ }
+
Add(Y("import", "aggregate_module", BuildQuotedAtom(Pos, "/lib/yql/aggregate.yql")));
Add(Y("import", "window_module", BuildQuotedAtom(Pos, "/lib/yql/window.yql")));
for (const auto& module : ctx.Settings.ModuleMapping) {
@@ -1661,15 +1661,15 @@ public:
BuildQuotedAtom(Pos, "DiscoveryMode"))));
}
- if (ctx.DqEngineEnable) {
- TString mode = "auto";
- if (ctx.PqReadByRtmrCluster && ctx.PqReadByRtmrCluster != "dq") {
- mode = "disable";
- } else if (ctx.DqEngineForce) {
- mode = "force";
- }
+ if (ctx.DqEngineEnable) {
+ TString mode = "auto";
+ if (ctx.PqReadByRtmrCluster && ctx.PqReadByRtmrCluster != "dq") {
+ mode = "disable";
+ } else if (ctx.DqEngineForce) {
+ mode = "force";
+ }
Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource,
- BuildQuotedAtom(Pos, "DqEngine"), BuildQuotedAtom(Pos, mode))));
+ BuildQuotedAtom(Pos, "DqEngine"), BuildQuotedAtom(Pos, mode))));
}
if (ctx.JsonQueryReturnsJsonDocument.Defined()) {
@@ -1685,23 +1685,23 @@ public:
Add(Y("let", "world", Y(TString(ConfigureName), "world", configSource,
BuildQuotedAtom(Pos, "OrderedColumns"))));
}
-
- if (ctx.PqReadByRtmrCluster) {
- auto pqSourceAll = Y("DataSource", BuildQuotedAtom(Pos, TString(PqProviderName)), BuildQuotedAtom(Pos, "$all"));
- Add(Y("let", "world", Y(TString(ConfigureName), "world", pqSourceAll,
- BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "PqReadByRtmrCluster_"), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster))));
-
- auto rtmrSourceAll = Y("DataSource", BuildQuotedAtom(Pos, TString(RtmrProviderName)), BuildQuotedAtom(Pos, "$all"));
- Add(Y("let", "world", Y(TString(ConfigureName), "world", rtmrSourceAll,
- BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "PqReadByRtmrCluster_"), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster))));
-
- if (ctx.PqReadByRtmrCluster != "dq") {
- // set any dynamic settings for particular RTMR cluster for CommitAll!
- auto rtmrSource = Y("DataSource", BuildQuotedAtom(Pos, TString(RtmrProviderName)), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster));
- Add(Y("let", "world", Y(TString(ConfigureName), "world", rtmrSource,
- BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "Dummy_"), BuildQuotedAtom(Pos, "1"))));
- }
- }
+
+ if (ctx.PqReadByRtmrCluster) {
+ auto pqSourceAll = Y("DataSource", BuildQuotedAtom(Pos, TString(PqProviderName)), BuildQuotedAtom(Pos, "$all"));
+ Add(Y("let", "world", Y(TString(ConfigureName), "world", pqSourceAll,
+ BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "PqReadByRtmrCluster_"), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster))));
+
+ auto rtmrSourceAll = Y("DataSource", BuildQuotedAtom(Pos, TString(RtmrProviderName)), BuildQuotedAtom(Pos, "$all"));
+ Add(Y("let", "world", Y(TString(ConfigureName), "world", rtmrSourceAll,
+ BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "PqReadByRtmrCluster_"), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster))));
+
+ if (ctx.PqReadByRtmrCluster != "dq") {
+ // set any dynamic settings for particular RTMR cluster for CommitAll!
+ auto rtmrSource = Y("DataSource", BuildQuotedAtom(Pos, TString(RtmrProviderName)), BuildQuotedAtom(Pos, ctx.PqReadByRtmrCluster));
+ Add(Y("let", "world", Y(TString(ConfigureName), "world", rtmrSource,
+ BuildQuotedAtom(Pos, "Attr"), BuildQuotedAtom(Pos, "Dummy_"), BuildQuotedAtom(Pos, "1"))));
+ }
+ }
}
}
@@ -1798,7 +1798,7 @@ public:
cluster = "$all";
serviceName = Prefix;
} else {
- serviceName = *ctx.GetClusterProvider(Prefix, cluster);
+ serviceName = *ctx.GetClusterProvider(Prefix, cluster);
}
auto datasource = Y("DataSource", BuildQuotedAtom(Pos, serviceName));
diff --git a/ydb/library/yql/sql/v1/select.cpp b/ydb/library/yql/sql/v1/select.cpp
index 2841f05a5b..0a86cbd461 100644
--- a/ydb/library/yql/sql/v1/select.cpp
+++ b/ydb/library/yql/sql/v1/select.cpp
@@ -644,7 +644,7 @@ TNodePtr BuildSubqueryRef(TNodePtr subquery, const TString& alias, int tupleInde
class TTableSource: public IRealSource {
public:
- TTableSource(TPosition pos, const TTableRef& table, const TString& label)
+ TTableSource(TPosition pos, const TTableRef& table, const TString& label)
: IRealSource(pos)
, Table(table)
, FakeSource(BuildFakeSource(pos))
@@ -740,11 +740,11 @@ public:
}
bool IsStream() const override {
- return IsStreamingService(Table.Service);
+ return IsStreamingService(Table.Service);
}
TPtr DoClone() const final {
- return new TTableSource(Pos, Table, GetLabel());
+ return new TTableSource(Pos, Table, GetLabel());
}
bool IsTableSource() const override {
@@ -756,8 +756,8 @@ private:
const TSourcePtr FakeSource;
};
-TSourcePtr BuildTableSource(TPosition pos, const TTableRef& table, const TString& label) {
- return new TTableSource(pos, table, label);
+TSourcePtr BuildTableSource(TPosition pos, const TTableRef& table, const TString& label) {
+ return new TTableSource(pos, table, label);
}
class TInnerSource: public IProxySource {
@@ -860,17 +860,17 @@ public:
return NewSource ? NewSource->Build(ctx) : Node;
}
- bool IsStream() const override {
- auto source = Node->GetSource();
- if (source) {
- return source->IsStream();
- }
- // NewSource will be built later in DoInit->TryMakeSourceFromExpression
- // where Service will be used in all situations
- // let's detect IsStream by Service value
- return IsStreamingService(Service);
- }
-
+ bool IsStream() const override {
+ auto source = Node->GetSource();
+ if (source) {
+ return source->IsStream();
+ }
+ // NewSource will be built later in DoInit->TryMakeSourceFromExpression
+ // where Service will be used in all situations
+ // let's detect IsStream by Service value
+ return IsStreamingService(Service);
+ }
+
TPtr DoClone() const final {
return new TInnerSource(Pos, SafeClone(Node), Service, Cluster, GetLabel());
}
@@ -1404,7 +1404,7 @@ public:
const TVector<TNodePtr>& terms,
bool distinct,
const TVector<TNodePtr>& without,
- bool selectStream,
+ bool selectStream,
const TWriteSettings& settings
)
: IRealSource(pos)
@@ -1420,7 +1420,7 @@ public:
, Without(without)
, Distinct(distinct)
, HoppingWindowSpec(hoppingWindowSpec)
- , SelectStream(selectStream)
+ , SelectStream(selectStream)
, Settings(settings)
{
}
@@ -1444,7 +1444,7 @@ public:
if (!Source->Init(ctx, initSrc)) {
return false;
}
- if (SelectStream && !Source->IsStream()) {
+ if (SelectStream && !Source->IsStream()) {
ctx.Error(Pos) << "SELECT STREAM is unsupported for non-streaming sources";
return false;
}
@@ -1477,10 +1477,10 @@ public:
for (auto& expr: GroupByExpr) {
if (auto sessionWindow = dynamic_cast<TSessionWindow*>(expr.Get())) {
- if (Source->IsStream()) {
- ctx.Error(Pos) << "SessionWindow is unsupported for streaming sources";
+ if (Source->IsStream()) {
+ ctx.Error(Pos) << "SessionWindow is unsupported for streaming sources";
return false;
- }
+ }
sessionWindow->MarkValid();
}
@@ -1703,7 +1703,7 @@ public:
}
bool IsStream() const override {
- return Source->IsStream();
+ return Source->IsStream();
}
EOrderKind GetOrderKind() const override {
@@ -1758,7 +1758,7 @@ public:
return new TSelectCore(Pos, Source->CloneSource(), CloneContainer(GroupByExpr),
CloneContainer(GroupBy), CompactGroupBy, AssumeSorted, CloneContainer(OrderBy),
SafeClone(Having), newSpecs, SafeClone(HoppingWindowSpec),
- CloneContainer(Terms), Distinct, Without, SelectStream, Settings);
+ CloneContainer(Terms), Distinct, Without, SelectStream, Settings);
}
private:
@@ -2092,7 +2092,7 @@ private:
const bool Distinct;
bool OrderByInit = false;
THoppingWindowSpecPtr HoppingWindowSpec;
- const bool SelectStream;
+ const bool SelectStream;
const TWriteSettings Settings;
};
@@ -2103,9 +2103,9 @@ public:
TSourcePtr source,
TNodePtr with,
bool withExtFunction,
- TVector<TNodePtr>&& terms,
+ TVector<TNodePtr>&& terms,
bool listCall,
- bool processStream,
+ bool processStream,
const TWriteSettings& settings,
const TVector<TSortSpecificationPtr>& assumeOrderBy
)
@@ -2113,9 +2113,9 @@ public:
, Source(std::move(source))
, With(with)
, WithExtFunction(withExtFunction)
- , Terms(std::move(terms))
+ , Terms(std::move(terms))
, ListCall(listCall)
- , ProcessStream(processStream)
+ , ProcessStream(processStream)
, Settings(settings)
, AssumeOrderBy(assumeOrderBy)
{
@@ -2135,11 +2135,11 @@ public:
return false;
}
- if (ProcessStream && !Source->IsStream()) {
- ctx.Error(Pos) << "PROCESS STREAM is unsupported for non-streaming sources";
- return false;
- }
-
+ if (ProcessStream && !Source->IsStream()) {
+ ctx.Error(Pos) << "PROCESS STREAM is unsupported for non-streaming sources";
+ return false;
+ }
+
auto src = Source.Get();
if (!With) {
src->AllColumns();
@@ -2306,17 +2306,17 @@ public:
return false;
}
- bool IsStream() const override {
- return Source->IsStream();
- }
-
+ bool IsStream() const override {
+ return Source->IsStream();
+ }
+
TWriteSettings GetWriteSettings() const override {
return Settings;
}
TNodePtr DoClone() const final {
return new TProcessSource(Pos, Source->CloneSource(), SafeClone(With), WithExtFunction,
- CloneContainer(Terms), ListCall, ProcessStream, Settings, CloneContainer(AssumeOrderBy));
+ CloneContainer(Terms), ListCall, ProcessStream, Settings, CloneContainer(AssumeOrderBy));
}
private:
@@ -2341,7 +2341,7 @@ private:
const bool WithExtFunction;
TVector<TNodePtr> Terms;
const bool ListCall;
- const bool ProcessStream;
+ const bool ProcessStream;
const TWriteSettings Settings;
TVector<TSortSpecificationPtr> AssumeOrderBy;
};
@@ -2353,7 +2353,7 @@ TSourcePtr BuildProcess(
bool withExtFunction,
TVector<TNodePtr>&& terms,
bool listCall,
- bool processStream,
+ bool processStream,
const TWriteSettings& settings,
const TVector<TSortSpecificationPtr>& assumeOrderBy
) {
@@ -2465,12 +2465,12 @@ TSourcePtr DoBuildSelectCore(
TVector<TNodePtr>&& terms,
bool distinct,
TVector<TNodePtr>&& without,
- bool selectStream,
+ bool selectStream,
const TWriteSettings& settings
) {
if (groupBy.empty() || !groupBy.front()->ContentListPtr()) {
return new TSelectCore(pos, std::move(source), groupByExpr, groupBy, compactGroupBy, assumeSorted,
- orderBy, having, winSpecs, hoppingWindowSpec, terms, distinct, without, selectStream, settings);
+ orderBy, having, winSpecs, hoppingWindowSpec, terms, distinct, without, selectStream, settings);
}
if (groupBy.size() == 1) {
/// actualy no big idea to use grouping function in this case (result allways 0)
@@ -2478,7 +2478,7 @@ TSourcePtr DoBuildSelectCore(
source = new TNestedProxySource(pos, *contentPtr, source);
return DoBuildSelectCore(ctx, pos, originalSource, source, groupByExpr, *contentPtr, compactGroupBy,
assumeSorted, orderBy, having, std::move(winSpecs),
- hoppingWindowSpec, std::move(terms), distinct, std::move(without), selectStream, settings);
+ hoppingWindowSpec, std::move(terms), distinct, std::move(without), selectStream, settings);
}
/// \todo some smart merge logic, generalize common part of grouping (expr, flatten, etc)?
TIntrusivePtr<TCompositeSelect> compositeSelect = new TCompositeSelect(pos, std::move(source), originalSource->CloneSource(), settings);
@@ -2505,7 +2505,7 @@ TSourcePtr DoBuildSelectCore(
totalGroups += contentPtr->size();
TSelectCore* selectCore = new TSelectCore(pos, std::move(proxySource), CloneContainer(groupByExpr),
CloneContainer(*contentPtr), compactGroupBy, assumeSorted, orderBy, SafeClone(having), winSpecs,
- hoppingWindowSpec, terms, distinct, without, selectStream, settings);
+ hoppingWindowSpec, terms, distinct, without, selectStream, settings);
subselects.emplace_back(selectCore);
}
if (totalGroups > ctx.PragmaGroupByLimit) {
@@ -2533,11 +2533,11 @@ TSourcePtr BuildSelectCore(
TVector<TNodePtr>&& terms,
bool distinct,
TVector<TNodePtr>&& without,
- bool selectStream,
+ bool selectStream,
const TWriteSettings& settings)
{
return DoBuildSelectCore(ctx, pos, source, source, groupByExpr, groupBy, compactGroupBy, assumeSorted, orderBy,
- having, std::move(winSpecs), hoppingWindowSpec, std::move(terms), distinct, std::move(without), selectStream, settings);
+ having, std::move(winSpecs), hoppingWindowSpec, std::move(terms), distinct, std::move(without), selectStream, settings);
}
class TUnionAll: public IRealSource {
diff --git a/ydb/library/yql/sql/v1/sql.cpp b/ydb/library/yql/sql/v1/sql.cpp
index ab5a864788..6d71ed45c6 100644
--- a/ydb/library/yql/sql/v1/sql.cpp
+++ b/ydb/library/yql/sql/v1/sql.cpp
@@ -77,8 +77,8 @@ inline TIdentifier GetKeywordId(TTranslation& ctx, const TRule_keyword& node) {
return GetIdentifier(ctx, node.GetAlt_keyword1().GetRule_keyword_compat1());
case TRule_keyword::kAltKeyword2:
return GetIdentifier(ctx, node.GetAlt_keyword2().GetRule_keyword_expr_uncompat1());
- case TRule_keyword::kAltKeyword3:
- return GetIdentifier(ctx, node.GetAlt_keyword3().GetRule_keyword_table_uncompat1());
+ case TRule_keyword::kAltKeyword3:
+ return GetIdentifier(ctx, node.GetAlt_keyword3().GetRule_keyword_table_uncompat1());
case TRule_keyword::kAltKeyword4:
return GetIdentifier(ctx, node.GetAlt_keyword4().GetRule_keyword_select_uncompat1());
case TRule_keyword::kAltKeyword5:
@@ -183,7 +183,7 @@ static std::pair<bool, TString> Id(const TRule_id_or_at& node, TTranslation& ctx
return std::make_pair(hasAt, Id(node.GetRule_an_id_or_type2(), ctx) );
}
-static TString Id(const TRule_id_table& node, TTranslation& ctx) {
+static TString Id(const TRule_id_table& node, TTranslation& ctx) {
//id_table:
// identifier
// | keyword_compat
@@ -196,7 +196,7 @@ static TString Id(const TRule_id_table& node, TTranslation& ctx) {
// | keyword_hint_uncompat
// | keyword_schema_uncompat
//;
- switch (node.Alt_case()) {
+ switch (node.Alt_case()) {
case TRule_id_table::kAltIdTable1:
return Id(node.GetAlt_id_table1().GetRule_identifier1(), ctx);
case TRule_id_table::kAltIdTable2:
@@ -215,9 +215,9 @@ static TString Id(const TRule_id_table& node, TTranslation& ctx) {
return GetKeyword(ctx, node.GetAlt_id_table8().GetRule_keyword_schema_uncompat1());
default:
Y_FAIL("You should change implementation according to grammar changes");
- }
-}
-
+ }
+}
+
static TString Id(const TRule_an_id_table& node, TTranslation& ctx) {
// an_id_table: id_table | STRING_VALUE;
switch (node.Alt_case()) {
@@ -782,18 +782,18 @@ static bool IsColumnsOnly(const TVector<TSortSpecificationPtr>& container) {
return true;
}
-static bool PackageVersionFromString(const TString& s, ui32& version) {
- if (s == "release") {
- version = 0;
- return true;
- }
- if (s == "draft") {
- version = 1;
- return true;
- }
- return TryFromString(s, version);
-}
-
+static bool PackageVersionFromString(const TString& s, ui32& version) {
+ if (s == "release") {
+ version = 0;
+ return true;
+ }
+ if (s == "draft") {
+ version = 1;
+ return true;
+ }
+ return TryFromString(s, version);
+}
+
class TSqlQuery;
struct TSymbolNameWithPos {
@@ -1412,20 +1412,20 @@ bool TSqlTranslation::ClusterExpr(const TRule_cluster_expr& node, bool allowWild
}
if (value.GetLiteral()) {
- TString clusterName = *value.GetLiteral();
+ TString clusterName = *value.GetLiteral();
if (allowBinding && to_lower(clusterName) == "bindings") {
isBinding = true;
return true;
}
- TString normalizedClusterName;
- auto foundProvider = Ctx.GetClusterProvider(clusterName, normalizedClusterName);
+ TString normalizedClusterName;
+ auto foundProvider = Ctx.GetClusterProvider(clusterName, normalizedClusterName);
if (!foundProvider) {
- Ctx.Error() << "Unknown cluster: " << clusterName;
+ Ctx.Error() << "Unknown cluster: " << clusterName;
return false;
}
if (service && *foundProvider != service) {
- Ctx.Error() << "Mismatch of cluster " << clusterName << " service, expected: "
+ Ctx.Error() << "Mismatch of cluster " << clusterName << " service, expected: "
<< *foundProvider << ", got: " << service;
return false;
}
@@ -1434,7 +1434,7 @@ bool TSqlTranslation::ClusterExpr(const TRule_cluster_expr& node, bool allowWild
service = *foundProvider;
}
- value = TDeferredAtom(Ctx.Pos(), normalizedClusterName);
+ value = TDeferredAtom(Ctx.Pos(), normalizedClusterName);
} else {
if (!service) {
Ctx.Error() << "Cluster service is not set";
@@ -1478,7 +1478,7 @@ bool TSqlTranslation::ApplyTableBinding(const TString& binding, TTableRef& tr, T
const auto& bindSettings = (pit != settings.PrivateBindings.end()) ? pit->second : sit->second;
- if (!IsIn({S3ProviderName, PqProviderName}, bindSettings.ClusterType)) {
+ if (!IsIn({S3ProviderName, PqProviderName}, bindSettings.ClusterType)) {
Ctx.Error() << "Cluster type " << bindSettings.ClusterType << " is not supported for table bindings";
return false;
}
@@ -1522,13 +1522,13 @@ bool TSqlTranslation::ApplyTableBinding(const TString& binding, TTableRef& tr, T
TVector<TTableArg> args;
for (auto& arg : { path, format }) {
args.emplace_back();
- args.back().Expr = BuildLiteralRawString(Ctx.Pos(), arg);
+ args.back().Expr = BuildLiteralRawString(Ctx.Pos(), arg);
}
for (auto& [key, value] : kvs) {
YQL_ENSURE(!key.empty());
args.emplace_back();
- args.back().Expr = BuildLiteralRawString(Ctx.Pos(), value);
+ args.back().Expr = BuildLiteralRawString(Ctx.Pos(), value);
args.back().Expr->SetLabel(key);
}
@@ -6000,7 +6000,7 @@ TSourcePtr TSqlSelect::SingleSource(const TRule_single_source& node, const TVect
TPosition pos(Ctx.Pos());
Ctx.IncrementMonCounter("sql_select_clusters", table.Cluster.GetLiteral() ? *table.Cluster.GetLiteral() : "unknown");
- return BuildTableSource(pos, table);
+ return BuildTableSource(pos, table);
}
}
case TRule_single_source::kAltSingleSource2: {
@@ -6323,10 +6323,10 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS
// PROCESS STREAM? named_single_source (COMMA named_single_source)* (USING using_call_expr (AS an_id)?
// (WITH external_call_settings)?
// (WHERE expr)? (HAVING expr)? (ASSUME order_by_clause)?)?
-
+
Token(node.GetToken1());
TPosition startPos(Ctx.Pos());
-
+
if (!selectPos) {
selectPos = startPos;
}
@@ -6349,8 +6349,8 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS
source = BuildMuxSource(pos, std::move(sources));
}
- const bool processStream = node.HasBlock2();
-
+ const bool processStream = node.HasBlock2();
+
if (!hasUsing) {
return BuildProcess(startPos, std::move(source), nullptr, false, {}, false, processStream, settings, {});
}
@@ -6365,7 +6365,7 @@ TSourcePtr TSqlSelect::ProcessCore(const TRule_process_core& node, const TWriteS
}
Ctx.IncrementMonCounter("sql_features", "ProcessWhere");
} else {
- Ctx.IncrementMonCounter("sql_features", processStream ? "ProcessStream" : "Process");
+ Ctx.IncrementMonCounter("sql_features", processStream ? "ProcessStream" : "Process");
}
if (block5.HasBlock6()) {
@@ -6583,7 +6583,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet
return nullptr;
}
- const bool selectStream = node.HasBlock3();
+ const bool selectStream = node.HasBlock3();
TVector<TNodePtr> without;
if (node.HasBlock8()) {
if (!ColumnList(without, node.GetBlock8().GetRule_without_column_list2())) {
@@ -6617,7 +6617,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet
bool compactGroupBy = false;
if (node.HasBlock11()) {
TGroupByClause clause(Ctx, Mode);
- if (!clause.Build(node.GetBlock11().GetRule_group_by_clause1(), source->IsStream())) {
+ if (!clause.Build(node.GetBlock11().GetRule_group_by_clause1(), source->IsStream())) {
return nullptr;
}
for (const auto& exprAlias: clause.Aliases()) {
@@ -6643,7 +6643,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet
TWinSpecs windowSpec;
if (node.HasBlock13()) {
- if (source->IsStream()) {
+ if (source->IsStream()) {
Ctx.Error() << "WINDOW is not allowed in streaming queries";
return nullptr;
}
@@ -6661,7 +6661,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet
Token(orderBlock.GetRule_order_by_clause2().GetToken1());
- if (source->IsStream()) {
+ if (source->IsStream()) {
Ctx.Error() << "ORDER BY is not allowed in streaming queries";
return nullptr;
}
@@ -6716,7 +6716,7 @@ TSourcePtr TSqlSelect::SelectCore(const TRule_select_core& node, const TWriteSet
return nullptr;
}
return BuildSelectCore(Ctx, startPos, std::move(source), groupByExpr, groupBy, compactGroupBy, assumeSorted, orderBy, having,
- std::move(windowSpec), hoppingWindowSpec, std::move(terms), distinct, std::move(without), selectStream, settings);
+ std::move(windowSpec), hoppingWindowSpec, std::move(terms), distinct, std::move(without), selectStream, settings);
}
TString TSqlTranslation::FrameSettingsToString(EFrameSettings settings, bool isUnbounded) {
@@ -9222,14 +9222,14 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
Ctx.IncrementMonCounter("sql_pragma", "udf");
success = true;
return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "ImportUdfs", values, false);
- } else if (normalizedPragma == "packageversion") {
- if (values.size() != 2 || pragmaValueDefault) {
- Error() << "Expected package name and version";
- Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
- return {};
- }
-
- ui32 version = 0;
+ } else if (normalizedPragma == "packageversion") {
+ if (values.size() != 2 || pragmaValueDefault) {
+ Error() << "Expected package name and version";
+ Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
+ return {};
+ }
+
+ ui32 version = 0;
TString versionString;
TString packageName;
if (!values[0].GetLiteral(packageName, Ctx) || !values[1].GetLiteral(versionString, Ctx)) {
@@ -9238,15 +9238,15 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
}
if (!PackageVersionFromString(versionString, version)) {
- Error() << "Unable to parse package version, possible values 0, 1, draft, release";
- Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
- return {};
- }
-
+ Error() << "Unable to parse package version, possible values 0, 1, draft, release";
+ Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
+ return {};
+ }
+
Ctx.SetPackageVersion(packageName, version);
- Ctx.IncrementMonCounter("sql_pragma", "PackageVersion");
- success = true;
- return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "SetPackageVersion", TVector<TDeferredAtom>{ values[0], TDeferredAtom(values[1].Build()->GetPos(), ToString(version)) }, false);
+ Ctx.IncrementMonCounter("sql_pragma", "PackageVersion");
+ success = true;
+ return BuildPragma(Ctx.Pos(), TString(ConfigProviderName), "SetPackageVersion", TVector<TDeferredAtom>{ values[0], TDeferredAtom(values[1].Build()->GetPos(), ToString(version)) }, false);
} else if (normalizedPragma == "file") {
if (values.size() != 2U || pragmaValueDefault) {
Error() << "Expected file alias and url as pragma values";
@@ -9540,28 +9540,28 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
// PositionalUnionAll implies OrderedColumns
Ctx.OrderedColumns = true;
Ctx.IncrementMonCounter("sql_pragma", "PositionalUnionAll");
- } else if (normalizedPragma == "pqreadby") {
+ } else if (normalizedPragma == "pqreadby") {
if (values.size() != 1 || !values[0].GetLiteral()) {
Error() << "Expected string literal as a single argument for: " << pragma;
- Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
- return {};
- }
-
- // special guard to raise error on situation:
- // use cluster1;
- // pragma PqReadPqBy="cluster2";
- const TString* currentClusterLiteral = Ctx.Scoped->CurrCluster.GetLiteral();
- if (currentClusterLiteral && *values[0].GetLiteral() != "dq" && *currentClusterLiteral != *values[0].GetLiteral()) {
- Error() << "Cluster in PqReadPqBy pragma differs from cluster specified in USE statement: " << *values[0].GetLiteral() << " != " << *currentClusterLiteral;
- Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
- return {};
- }
-
- Ctx.PqReadByRtmrCluster = *values[0].GetLiteral();
- Ctx.IncrementMonCounter("sql_pragma", "PqReadBy");
+ Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
+ return {};
+ }
+
+ // special guard to raise error on situation:
+ // use cluster1;
+ // pragma PqReadPqBy="cluster2";
+ const TString* currentClusterLiteral = Ctx.Scoped->CurrCluster.GetLiteral();
+ if (currentClusterLiteral && *values[0].GetLiteral() != "dq" && *currentClusterLiteral != *values[0].GetLiteral()) {
+ Error() << "Cluster in PqReadPqBy pragma differs from cluster specified in USE statement: " << *values[0].GetLiteral() << " != " << *currentClusterLiteral;
+ Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
+ return {};
+ }
+
+ Ctx.PqReadByRtmrCluster = *values[0].GetLiteral();
+ Ctx.IncrementMonCounter("sql_pragma", "PqReadBy");
} else if (normalizedPragma == "bogousstaringroupbyoverjoin") {
Ctx.BogousStarInGroupByOverJoin = true;
- Ctx.IncrementMonCounter("sql_pragma", "BogousStarInGroupByOverJoin");
+ Ctx.IncrementMonCounter("sql_pragma", "BogousStarInGroupByOverJoin");
} else if (normalizedPragma == "strictjoinkeytypes") {
Ctx.Scoped->StrictJoinKeyTypes = true;
Ctx.IncrementMonCounter("sql_pragma", "StrictJoinKeyTypes");
@@ -9650,7 +9650,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
}
} else if (std::find(Providers.cbegin(), Providers.cend(), lowerPrefix) == Providers.cend()) {
- if (!Ctx.HasCluster(prefix)) {
+ if (!Ctx.HasCluster(prefix)) {
Error() << "Unknown pragma prefix: " << prefix << ", please use cluster name or one of provider " <<
JoinRange(", ", Providers.cbegin(), Providers.cend());
Ctx.IncrementMonCounter("sql_errors", "UnknownPragma");
@@ -9658,7 +9658,7 @@ TNodePtr TSqlQuery::PragmaStatement(const TRule_pragma_stmt& stmt, bool& success
}
}
- if (normalizedPragma != "flags" && normalizedPragma != "packageversion") {
+ if (normalizedPragma != "flags" && normalizedPragma != "packageversion") {
if (values.size() > 1) {
Error() << "Expected at most one value in the pragma";
Ctx.IncrementMonCounter("sql_errors", "BadPragmaValue");
@@ -9692,7 +9692,7 @@ TNodePtr TSqlQuery::Build(const TRule_delete_stmt& stmt) {
return nullptr;
}
- TSourcePtr source = BuildTableSource(Ctx.Pos(), table);
+ TSourcePtr source = BuildTableSource(Ctx.Pos(), table);
if (stmt.HasBlock4()) {
switch (stmt.GetBlock4().Alt_case()) {
@@ -9745,7 +9745,7 @@ TNodePtr TSqlQuery::Build(const TRule_update_stmt& stmt) {
case TRule_update_stmt_TBlock3::kAlt1: {
const auto& alt = stmt.GetBlock3().GetAlt1();
TSourcePtr values = Build(alt.GetRule_set_clause_choice2());
- auto source = BuildTableSource(Ctx.Pos(), table);
+ auto source = BuildTableSource(Ctx.Pos(), table);
if (alt.HasBlock3()) {
TColumnRefScope scope(Ctx, EColumnRefState::Allow);
@@ -10079,15 +10079,15 @@ TAstNode* SqlASTToYql(const google::protobuf::Message& protoAst, TContext& ctx)
}
TSqlQuery query(ctx, ctx.Settings.Mode, true);
TNodePtr node(query.Build(static_cast<const TSQLv1ParserAST&>(protoAst)));
- try {
- if (node && node->Init(ctx, nullptr)) {
- return node->Translate(ctx);
- }
- } catch (const NProtoAST::TTooManyErrors&) {
- // do not add error issue, no room for it
+ try {
+ if (node && node->Init(ctx, nullptr)) {
+ return node->Translate(ctx);
+ }
+ } catch (const NProtoAST::TTooManyErrors&) {
+ // do not add error issue, no room for it
}
-
- return nullptr;
+
+ return nullptr;
}
void SqlASTToYqlImpl(NYql::TAstParseResult& res, const google::protobuf::Message& protoAst,
@@ -10100,7 +10100,7 @@ void SqlASTToYqlImpl(NYql::TAstParseResult& res, const google::protobuf::Message
ctx.IncrementMonCounter("sql_errors", "AstToYqlError");
} else {
ctx.IncrementMonCounter("sql_errors", "AstToYqlSilentError");
- ctx.Error() << "Error occurred on parse SQL query, but no error is collected" <<
+ ctx.Error() << "Error occurred on parse SQL query, but no error is collected" <<
", please send this request over bug report into YQL interface or write on yql@ maillist";
}
}
diff --git a/ydb/library/yql/sql/v1/sql_ut.cpp b/ydb/library/yql/sql/v1/sql_ut.cpp
index 85b6e0dfcd..0aabcf5857 100644
--- a/ydb/library/yql/sql/v1/sql_ut.cpp
+++ b/ydb/library/yql/sql/v1/sql_ut.cpp
@@ -31,7 +31,7 @@ NYql::TAstParseResult SqlToYqlWithMode(const TString& query, NSQLTranslation::ES
const auto service = provider ? provider : TString(NYql::YtProviderName);
const TString cluster = "plato";
settings.ClusterMapping[cluster] = service;
- settings.ClusterMapping["hahn"] = NYql::YtProviderName;
+ settings.ClusterMapping["hahn"] = NYql::YtProviderName;
settings.MaxErrors = maxErrors;
settings.Mode = mode;
settings.Arena = &arena;
@@ -883,66 +883,66 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
"USE plato; INSERT INTO Output SELECT STREAM key FROM Input;",
10, TString(NYql::RtmrProviderName));
UNIT_ASSERT(res.Root);
-
- res = SqlToYql(
- "USE plato; INSERT INTO Output SELECT key FROM Input;",
- 10, TString(NYql::RtmrProviderName));
- UNIT_ASSERT(res.Root);
- }
-
- Y_UNIT_TEST(SelectStreamRtmrJoinWithYt) {
- NYql::TAstParseResult res = SqlToYql(
- "USE plato; INSERT INTO Output SELECT STREAM key FROM Input LEFT JOIN hahn.ttt as t ON Input.key = t.Name;",
- 10, TString(NYql::RtmrProviderName));
- UNIT_ASSERT(res.Root);
- }
-
- Y_UNIT_TEST(SelectStreamNonRtmr) {
- NYql::TAstParseResult res = SqlToYql(
- "USE plato; INSERT INTO Output SELECT STREAM key FROM Input;",
- 10);
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:31: Error: SELECT STREAM is unsupported for non-streaming sources\n");
- }
-
+
+ res = SqlToYql(
+ "USE plato; INSERT INTO Output SELECT key FROM Input;",
+ 10, TString(NYql::RtmrProviderName));
+ UNIT_ASSERT(res.Root);
+ }
+
+ Y_UNIT_TEST(SelectStreamRtmrJoinWithYt) {
+ NYql::TAstParseResult res = SqlToYql(
+ "USE plato; INSERT INTO Output SELECT STREAM key FROM Input LEFT JOIN hahn.ttt as t ON Input.key = t.Name;",
+ 10, TString(NYql::RtmrProviderName));
+ UNIT_ASSERT(res.Root);
+ }
+
+ Y_UNIT_TEST(SelectStreamNonRtmr) {
+ NYql::TAstParseResult res = SqlToYql(
+ "USE plato; INSERT INTO Output SELECT STREAM key FROM Input;",
+ 10);
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:31: Error: SELECT STREAM is unsupported for non-streaming sources\n");
+ }
+
Y_UNIT_TEST(GroupByHopRtmr) {
NYql::TAstParseResult res = SqlToYql(R"(
- USE plato; INSERT INTO Output SELECT key, SUM(value) AS value FROM Input
+ USE plato; INSERT INTO Output SELECT key, SUM(value) AS value FROM Input
GROUP BY key, HOP(subkey, "PT10S", "PT30S", "PT20S");
)", 10, TString(NYql::RtmrProviderName));
UNIT_ASSERT(res.Root);
}
- Y_UNIT_TEST(GroupByHopRtmrSubquery) {
- // 'use plato' intentially avoided
- NYql::TAstParseResult res = SqlToYql(R"(
- SELECT COUNT(*) AS value FROM (SELECT * FROM plato.Input)
- GROUP BY HOP(Data, "PT10S", "PT30S", "PT20S")
- )", 10, TString(NYql::RtmrProviderName));
- UNIT_ASSERT(res.Root);
- }
-
- Y_UNIT_TEST(GroupByHopRtmrSubqueryBinding) {
- NYql::TAstParseResult res = SqlToYql(R"(
- USE plato;
- $q = SELECT * FROM Input;
- INSERT INTO Output SELECT STREAM * FROM (
- SELECT COUNT(*) AS value FROM $q
- GROUP BY HOP(Data, "PT10S", "PT30S", "PT20S")
- );
- )", 10, TString(NYql::RtmrProviderName));
- UNIT_ASSERT(res.Root);
- }
-
- Y_UNIT_TEST(GroupByNoHopRtmr) {
- NYql::TAstParseResult res = SqlToYql(R"(
- USE plato; INSERT INTO Output SELECT STREAM key, SUM(value) AS value FROM Input
- GROUP BY key;
- )", 10, TString(NYql::RtmrProviderName));
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:3:22: Error: Streaming group by query must have a hopping window specification.\n");
- }
-
+ Y_UNIT_TEST(GroupByHopRtmrSubquery) {
+ // 'use plato' intentially avoided
+ NYql::TAstParseResult res = SqlToYql(R"(
+ SELECT COUNT(*) AS value FROM (SELECT * FROM plato.Input)
+ GROUP BY HOP(Data, "PT10S", "PT30S", "PT20S")
+ )", 10, TString(NYql::RtmrProviderName));
+ UNIT_ASSERT(res.Root);
+ }
+
+ Y_UNIT_TEST(GroupByHopRtmrSubqueryBinding) {
+ NYql::TAstParseResult res = SqlToYql(R"(
+ USE plato;
+ $q = SELECT * FROM Input;
+ INSERT INTO Output SELECT STREAM * FROM (
+ SELECT COUNT(*) AS value FROM $q
+ GROUP BY HOP(Data, "PT10S", "PT30S", "PT20S")
+ );
+ )", 10, TString(NYql::RtmrProviderName));
+ UNIT_ASSERT(res.Root);
+ }
+
+ Y_UNIT_TEST(GroupByNoHopRtmr) {
+ NYql::TAstParseResult res = SqlToYql(R"(
+ USE plato; INSERT INTO Output SELECT STREAM key, SUM(value) AS value FROM Input
+ GROUP BY key;
+ )", 10, TString(NYql::RtmrProviderName));
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:3:22: Error: Streaming group by query must have a hopping window specification.\n");
+ }
+
Y_UNIT_TEST(KikimrInserts) {
NYql::TAstParseResult res = SqlToYql(R"(
USE plato;
@@ -1457,7 +1457,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
Y_UNIT_TEST(PqReadByAfterUse) {
ExpectFailWithError("use plato; pragma PqReadBy='plato2';",
- "<main>:1:28: Error: Cluster in PqReadPqBy pragma differs from cluster specified in USE statement: plato2 != plato\n");
+ "<main>:1:28: Error: Cluster in PqReadPqBy pragma differs from cluster specified in USE statement: plato2 != plato\n");
UNIT_ASSERT(SqlToYql("pragma PqReadBy='plato2';").IsOk());
UNIT_ASSERT(SqlToYql("pragma PqReadBy='plato2'; use plato;").IsOk());
@@ -1498,8 +1498,8 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
bindSettings.Settings["format"] = "format";
bindSettings.Settings["compression"] = "ccompression";
bindSettings.Settings["bar"] = "1";
- // schema is not validated in this test but should be valid YSON text
- bindSettings.Settings["schema"] = R"__("[
+ // schema is not validated in this test but should be valid YSON text
+ bindSettings.Settings["schema"] = R"__("[
"StructType";
[
[
@@ -1523,7 +1523,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
"String"
]
]
- ]])__";
+ ]])__";
settings.PrivateBindings["foo"] = bindSettings;
@@ -1536,7 +1536,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
TVerifyLineFunc verifyLine = [](const TString& word, const TString& line) {
if (word == "MrObject") {
UNIT_ASSERT_VALUES_UNEQUAL(TString::npos,
- line.find(R"__((MrObject '"path" '"format" '('('"bar" (String '"1")) '('"compression" (String '"ccompression")))))__"));
+ line.find(R"__((MrObject '"path" '"format" '('('"bar" (String '"1")) '('"compression" (String '"ccompression")))))__"));
} else if (word == "userschema") {
UNIT_ASSERT_VALUES_UNEQUAL(TString::npos,
line.find(R"__('('('"userschema" (SqlTypeFromYson)__"));
@@ -1667,17 +1667,17 @@ Y_UNIT_TEST_SUITE(ExternalFunction) {
Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
Y_UNIT_TEST(StrayUTF8) {
/// 'c' in plato is russian here
- NYql::TAstParseResult res = SqlToYql("select * from сedar.Input");
+ NYql::TAstParseResult res = SqlToYql("select * from сedar.Input");
UNIT_ASSERT(!res.Root);
-
- TString a1 = Err2Str(res);
+
+ TString a1 = Err2Str(res);
TString a2(R"foo(<main>:1:14: Error: Unexpected character 'с' (Unicode character <1089>) : cannot match to any predicted input...
-
+
<main>:1:15: Error: Unexpected character : cannot match to any predicted input...
-
-)foo");
-
- UNIT_ASSERT_NO_DIFF(a1, a2);
+
+)foo");
+
+ UNIT_ASSERT_NO_DIFF(a1, a2);
}
Y_UNIT_TEST(IvalidStringLiteralWithEscapedBackslash) {
@@ -2089,13 +2089,13 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
}
Y_UNIT_TEST(UpsertValuesNoLabelsKikimr) {
- NYql::TAstParseResult res = SqlToYql("upsert into plato.Output values (1)", 10, TString(NYql::KikimrProviderName));
+ NYql::TAstParseResult res = SqlToYql("upsert into plato.Output values (1)", 10, TString(NYql::KikimrProviderName));
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:19: Error: UPSERT INTO ... VALUES requires specification of table columns\n");
}
Y_UNIT_TEST(ReplaceValuesNoLabelsKikimr) {
- NYql::TAstParseResult res = SqlToYql("replace into plato.Output values (1)", 10, TString(NYql::KikimrProviderName));
+ NYql::TAstParseResult res = SqlToYql("replace into plato.Output values (1)", 10, TString(NYql::KikimrProviderName));
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:20: Error: REPLACE INTO ... VALUES requires specification of table columns\n");
}
@@ -2356,7 +2356,7 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
}
Y_UNIT_TEST(InsertIntoWithTruncateKikimr) {
- NYql::TAstParseResult res = SqlToYql("INSERT INTO plato.Output WITH TRUNCATE SELECT key FROM plato.Input", 10, TString(NYql::KikimrProviderName));
+ NYql::TAstParseResult res = SqlToYql("INSERT INTO plato.Output WITH TRUNCATE SELECT key FROM plato.Input", 10, TString(NYql::KikimrProviderName));
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:0: Error: INSERT INTO WITH TRUNCATE is not supported for kikimr tables\n");
}
@@ -2368,7 +2368,7 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
}
Y_UNIT_TEST(UpsertWithWrongArgumentCount) {
- NYql::TAstParseResult res = SqlToYql("upsert into plato.Output (key, value, subkey) values (2, '3');", 10, TString(NYql::KikimrProviderName));
+ NYql::TAstParseResult res = SqlToYql("upsert into plato.Output (key, value, subkey) values (2, '3');", 10, TString(NYql::KikimrProviderName));
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:39: Error: VALUES have 2 columns, UPSERT INTO expects: 3\n");
}
@@ -2524,16 +2524,16 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:0: Error: IF EXISTS in DROP TABLE is not supported.\n");
}
-
+
Y_UNIT_TEST(TooManyErrors) {
- const char* q = R"(
- USE plato;
+ const char* q = R"(
+ USE plato;
select A, B, C, D, E, F, G, H, I, J, K, L, M, N from (select b from `abc`);
-)";
-
- NYql::TAstParseResult res = SqlToYql(q, 10);
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res),
+)";
+
+ NYql::TAstParseResult res = SqlToYql(q, 10);
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res),
R"(<main>:3:16: Error: Column A is not in source column set. Did you mean b?
<main>:3:19: Error: Column B is not in source column set. Did you mean b?
<main>:3:22: Error: Column C is not in source column set. Did you mean b?
@@ -2544,7 +2544,7 @@ Y_UNIT_TEST_SUITE(SqlToYQLErrors) {
<main>:3:37: Error: Column H is not in source column set. Did you mean b?
<main>:3:40: Error: Column I is not in source column set. Did you mean b?
<main>: Error: Too many issues, code: 1
-)");
+)");
};
Y_UNIT_TEST(ShouldCloneBindingForNamedParameter) {
@@ -2689,24 +2689,24 @@ select FormatType($f());
UNIT_ASSERT(res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:51: Warning: Column names in SELECT don't match column specification in parenthesis. \"key\" doesn't match \"Key\". \"new_value\" doesn't match \"value\", code: 4517\n");
}
-
- Y_UNIT_TEST(YtCaseInsensitive) {
- NYql::TAstParseResult res = SqlToYql("select * from PlatO.foo;");
- UNIT_ASSERT(res.Root);
-
- res = SqlToYql("use PlatO; select * from foo;");
- UNIT_ASSERT(res.Root);
- }
-
- Y_UNIT_TEST(KikimrCaseSensitive) {
- NYql::TAstParseResult res = SqlToYql("select * from PlatO.foo;", 10, "kikimr");
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:15: Error: Unknown cluster: PlatO\n");
-
- res = SqlToYql("use PlatO; select * from foo;", 10, "kikimr");
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:5: Error: Unknown cluster: PlatO\n");
- }
+
+ Y_UNIT_TEST(YtCaseInsensitive) {
+ NYql::TAstParseResult res = SqlToYql("select * from PlatO.foo;");
+ UNIT_ASSERT(res.Root);
+
+ res = SqlToYql("use PlatO; select * from foo;");
+ UNIT_ASSERT(res.Root);
+ }
+
+ Y_UNIT_TEST(KikimrCaseSensitive) {
+ NYql::TAstParseResult res = SqlToYql("select * from PlatO.foo;", 10, "kikimr");
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:15: Error: Unknown cluster: PlatO\n");
+
+ res = SqlToYql("use PlatO; select * from foo;", 10, "kikimr");
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:5: Error: Unknown cluster: PlatO\n");
+ }
Y_UNIT_TEST(DiscoveryModeForbidden) {
NYql::TAstParseResult res = SqlToYqlWithMode("insert into plato.Output select * from plato.range(\"\", Input1, Input4)", NSQLTranslation::ESqlMode::DISCOVERY);
@@ -3940,7 +3940,7 @@ Y_UNIT_TEST_SUITE(SessionWindowNegative) {
";",
"<main>:7:5: Error: Duplicate session window specification:\n"
- "<main>:5:5: Error: Previous session window is declared here\n");
+ "<main>:5:5: Error: Previous session window is declared here\n");
ExpectFailWithError(
"SELECT\n"
@@ -3996,27 +3996,27 @@ Y_UNIT_TEST_SUITE(SessionWindowNegative) {
ExpectFailWithError("SELECT 1 + SessionState(), MIN(key) over w from plato.Input group by key window w as (partition by SessionWindow(ts, 1)) ",
"<main>:1:12: Error: SessionState can not be used here: SessionWindow specification is missing in GROUP BY. Maybe you forgot to add OVER `window_name`?\n");
}
-
+
Y_UNIT_TEST(AggregationBySessionStateIsNotSupportedYet) {
ExpectFailWithError("SELECT SOME(1 + SessionState()), key from plato.Input group by key, SessionWindow(ts, 1);",
"<main>:1:17: Error: SessionState with GROUP BY is not supported yet\n");
}
- Y_UNIT_TEST(SessionWindowInRtmr) {
- NYql::TAstParseResult res = SqlToYql(
- "SELECT * FROM plato.Input GROUP BY SessionWindow(ts, 10);",
- 10, TString(NYql::RtmrProviderName));
- UNIT_ASSERT(!res.Root);
- UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:54: Error: Streaming group by query must have a hopping window specification.\n");
-
- res = SqlToYql(R"(
- SELECT key, SUM(value) AS value FROM plato.Input
- GROUP BY key, HOP(subkey, "PT10S", "PT30S", "PT20S"), SessionWindow(ts, 10);
- )", 10, TString(NYql::RtmrProviderName));
-
- UNIT_ASSERT(!res.Root);
+ Y_UNIT_TEST(SessionWindowInRtmr) {
+ NYql::TAstParseResult res = SqlToYql(
+ "SELECT * FROM plato.Input GROUP BY SessionWindow(ts, 10);",
+ 10, TString(NYql::RtmrProviderName));
+ UNIT_ASSERT(!res.Root);
+ UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:1:54: Error: Streaming group by query must have a hopping window specification.\n");
+
+ res = SqlToYql(R"(
+ SELECT key, SUM(value) AS value FROM plato.Input
+ GROUP BY key, HOP(subkey, "PT10S", "PT30S", "PT20S"), SessionWindow(ts, 10);
+ )", 10, TString(NYql::RtmrProviderName));
+
+ UNIT_ASSERT(!res.Root);
UNIT_ASSERT_NO_DIFF(Err2Str(res), "<main>:2:13: Error: SessionWindow is unsupported for streaming sources\n");
- }
+ }
}
Y_UNIT_TEST_SUITE(LibraSqlSugar) {
diff --git a/ydb/library/yql/sql/ya.make b/ydb/library/yql/sql/ya.make
index e10a314ebc..574c50dc7b 100644
--- a/ydb/library/yql/sql/ya.make
+++ b/ydb/library/yql/sql/ya.make
@@ -17,7 +17,7 @@ PEERDIR(
)
SRCS(
- cluster_mapping.cpp
+ cluster_mapping.cpp
sql.cpp
)
diff --git a/ydb/library/yql/udfs/common/datetime2/datetime_udf.cpp b/ydb/library/yql/udfs/common/datetime2/datetime_udf.cpp
index 763fea8024..4f39df0c1d 100644
--- a/ydb/library/yql/udfs/common/datetime2/datetime_udf.cpp
+++ b/ydb/library/yql/udfs/common/datetime2/datetime_udf.cpp
@@ -54,8 +54,8 @@ namespace {
ythrow yexception() << "Error in FullSplitDate";
}
- TimezoneId = timezoneId;
-
+ TimezoneId = timezoneId;
+
Year = year;
Month = month;
Day = day;
@@ -70,14 +70,14 @@ namespace {
if (!IsUniversal(TimezoneId)) {
ui32 datetime;
if (!builder.MakeDatetime(Year, Month, Day, local ? 0 : Hour, local ? 0 : Minute, local ? 0 : Second, datetime, TimezoneId)) {
- ythrow yexception() << "Error in MakeDatetime";
- }
+ ythrow yexception() << "Error in MakeDatetime";
+ }
return datetime / 86400u;
} else {
ui16 date;
- if (!builder.MakeDate(Year, Month, Day, date)) {
- ythrow yexception() << "Error in MakeDate";
- }
+ if (!builder.MakeDate(Year, Month, Day, date)) {
+ ythrow yexception() << "Error in MakeDate";
+ }
return date;
}
}
@@ -87,9 +87,9 @@ namespace {
if (!builder.FullSplitDatetime2(value, year, month, day, hour, minute, second, dayOfYear, weekOfYear, weekOfYearIso8601, dayOfWeek, timezoneId)) {
ythrow yexception() << "Error in FullSplitDatetime";
- }
+ }
- TimezoneId = timezoneId;
+ TimezoneId = timezoneId;
Year = year;
Month = month;
Day = day;
@@ -104,10 +104,10 @@ namespace {
}
inline ui32 ToDatetime(const IDateBuilder& builder) const {
- ui32 datetime = 0;
- if (!builder.MakeDatetime(Year, Month, Day, Hour, Minute, Second, datetime, TimezoneId)) {
- ythrow yexception() << "Error in MakeDatetime";
- }
+ ui32 datetime = 0;
+ if (!builder.MakeDatetime(Year, Month, Day, Hour, Minute, Second, datetime, TimezoneId)) {
+ ythrow yexception() << "Error in MakeDatetime";
+ }
return datetime;
}
@@ -130,7 +130,7 @@ namespace {
ui32 year, month, day, hour, minute, second, dayOfYear, weekOfYear, weekOfYearIso8601, dayOfWeek;
if (!builder.FullSplitDatetime2(datetime, year, month, day, hour, minute, second, dayOfYear, weekOfYear, weekOfYearIso8601, dayOfWeek, TimezoneId)) {
ythrow yexception() << "Error in FullSplitDatetime.";
- }
+ }
DayOfYear = dayOfYear;
WeekOfYear = weekOfYear;
@@ -294,13 +294,13 @@ namespace {
template <typename TUserDataType>
class TSplit : public TBoxedValue {
- const TSourcePosition Pos_;
-
+ const TSourcePosition Pos_;
+
public:
- explicit TSplit(TSourcePosition pos)
- : Pos_(pos)
- {}
-
+ explicit TSplit(TSourcePosition pos)
+ : Pos_(pos)
+ {}
+
TUnboxedValue Run(
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const override;
@@ -315,7 +315,7 @@ namespace {
builder.Returns(builder.Resource(TMResourceName));
if (!typesOnly) {
- builder.Implementation(new TSplit<TUserDataType>(builder.GetSourcePosition()));
+ builder.Implementation(new TSplit<TUserDataType>(builder.GetSourcePosition()));
}
}
};
@@ -325,17 +325,17 @@ namespace {
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
-
- auto& builder = valueBuilder->GetDateBuilder();
- TUnboxedValuePod result(0);
- auto& storage = TTMStorage::Reference(result);
- storage.FromDate(builder, args[0].Get<ui16>());
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
- }
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
+
+ auto& builder = valueBuilder->GetDateBuilder();
+ TUnboxedValuePod result(0);
+ auto& storage = TTMStorage::Reference(result);
+ storage.FromDate(builder, args[0].Get<ui16>());
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ }
}
template <>
@@ -343,17 +343,17 @@ namespace {
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
-
- auto& builder = valueBuilder->GetDateBuilder();
- TUnboxedValuePod result(0);
- auto& storage = TTMStorage::Reference(result);
- storage.FromDatetime(builder, args[0].Get<ui32>());
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
- }
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
+
+ auto& builder = valueBuilder->GetDateBuilder();
+ TUnboxedValuePod result(0);
+ auto& storage = TTMStorage::Reference(result);
+ storage.FromDatetime(builder, args[0].Get<ui32>());
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ }
}
template <>
@@ -361,17 +361,17 @@ namespace {
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
-
- auto& builder = valueBuilder->GetDateBuilder();
- TUnboxedValuePod result(0);
- auto& storage = TTMStorage::Reference(result);
- storage.FromTimestamp(builder, args[0].Get<ui64>());
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
- }
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
+
+ auto& builder = valueBuilder->GetDateBuilder();
+ TUnboxedValuePod result(0);
+ auto& storage = TTMStorage::Reference(result);
+ storage.FromTimestamp(builder, args[0].Get<ui64>());
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ }
}
template <>
@@ -379,17 +379,17 @@ namespace {
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
-
- auto& builder = valueBuilder->GetDateBuilder();
- TUnboxedValuePod result(0);
- auto& storage = TTMStorage::Reference(result);
- storage.FromDate(builder, args[0].Get<ui16>(), args[0].GetTimezoneId());
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
- }
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
+
+ auto& builder = valueBuilder->GetDateBuilder();
+ TUnboxedValuePod result(0);
+ auto& storage = TTMStorage::Reference(result);
+ storage.FromDate(builder, args[0].Get<ui16>(), args[0].GetTimezoneId());
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ }
}
template <>
@@ -397,17 +397,17 @@ namespace {
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
-
- auto& builder = valueBuilder->GetDateBuilder();
- TUnboxedValuePod result(0);
- auto& storage = TTMStorage::Reference(result);
- storage.FromDatetime(builder, args[0].Get<ui32>(), args[0].GetTimezoneId());
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
- }
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
+
+ auto& builder = valueBuilder->GetDateBuilder();
+ TUnboxedValuePod result(0);
+ auto& storage = TTMStorage::Reference(result);
+ storage.FromDatetime(builder, args[0].Get<ui32>(), args[0].GetTimezoneId());
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ }
}
template <>
@@ -415,17 +415,17 @@ namespace {
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
-
- auto& builder = valueBuilder->GetDateBuilder();
- TUnboxedValuePod result(0);
- auto& storage = TTMStorage::Reference(result);
- storage.FromTimestamp(builder, args[0].Get<ui64>(), args[0].GetTimezoneId());
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
- }
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
+
+ auto& builder = valueBuilder->GetDateBuilder();
+ TUnboxedValuePod result(0);
+ auto& storage = TTMStorage::Reference(result);
+ storage.FromTimestamp(builder, args[0].Get<ui64>(), args[0].GetTimezoneId());
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ }
}
// Make*
@@ -554,85 +554,85 @@ namespace {
// Update
class TUpdate : public TBoxedValue {
- const TSourcePosition Pos_;
- public:
- explicit TUpdate(TSourcePosition pos)
- : Pos_(pos)
- {}
-
+ const TSourcePosition Pos_;
+ public:
+ explicit TUpdate(TSourcePosition pos)
+ : Pos_(pos)
+ {}
+
TUnboxedValue Run(
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const override
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
- auto result = args[0];
-
- if (args[1]) {
- auto year = args[1].Get<ui16>();
- if (!ValidateYear(year)) {
- return TUnboxedValuePod();
- }
- SetYear(result, year);
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
+ auto result = args[0];
+
+ if (args[1]) {
+ auto year = args[1].Get<ui16>();
+ if (!ValidateYear(year)) {
+ return TUnboxedValuePod();
+ }
+ SetYear(result, year);
}
- if (args[2]) {
- auto month = args[2].Get<ui8>();
- if (!ValidateMonth(month)) {
- return TUnboxedValuePod();
- }
- SetMonth(result, month);
+ if (args[2]) {
+ auto month = args[2].Get<ui8>();
+ if (!ValidateMonth(month)) {
+ return TUnboxedValuePod();
+ }
+ SetMonth(result, month);
}
- if (args[3]) {
- auto day = args[3].Get<ui8>();
- if (!ValidateDay(day)) {
- return TUnboxedValuePod();
- }
- SetDay(result, day);
+ if (args[3]) {
+ auto day = args[3].Get<ui8>();
+ if (!ValidateDay(day)) {
+ return TUnboxedValuePod();
+ }
+ SetDay(result, day);
}
- if (args[4]) {
- auto hour = args[4].Get<ui8>();
- if (!ValidateHour(hour)) {
- return TUnboxedValuePod();
- }
- SetHour(result, hour);
+ if (args[4]) {
+ auto hour = args[4].Get<ui8>();
+ if (!ValidateHour(hour)) {
+ return TUnboxedValuePod();
+ }
+ SetHour(result, hour);
}
- if (args[5]) {
- auto minute = args[5].Get<ui8>();
- if (!ValidateMinute(minute)) {
- return TUnboxedValuePod();
- }
- SetMinute(result, minute);
+ if (args[5]) {
+ auto minute = args[5].Get<ui8>();
+ if (!ValidateMinute(minute)) {
+ return TUnboxedValuePod();
+ }
+ SetMinute(result, minute);
}
- if (args[6]) {
- auto second = args[6].Get<ui8>();
- if (!ValidateSecond(second)) {
- return TUnboxedValuePod();
- }
- SetSecond(result, second);
+ if (args[6]) {
+ auto second = args[6].Get<ui8>();
+ if (!ValidateSecond(second)) {
+ return TUnboxedValuePod();
+ }
+ SetSecond(result, second);
}
- if (args[7]) {
- auto microsecond = args[7].Get<ui32>();
- if (!ValidateMicrosecond(microsecond)) {
- return TUnboxedValuePod();
- }
- SetMicrosecond(result, microsecond);
+ if (args[7]) {
+ auto microsecond = args[7].Get<ui32>();
+ if (!ValidateMicrosecond(microsecond)) {
+ return TUnboxedValuePod();
+ }
+ SetMicrosecond(result, microsecond);
}
- if (args[8]) {
- auto timezoneId = args[8].Get<ui16>();
- if (!ValidateTimezoneId(timezoneId)) {
- return TUnboxedValuePod();
- }
- SetTimezoneId(result, timezoneId);
- }
-
- auto& builder = valueBuilder->GetDateBuilder();
- auto& storage = TTMStorage::Reference(result);
- if (!storage.Validate(builder)) {
+ if (args[8]) {
+ auto timezoneId = args[8].Get<ui16>();
+ if (!ValidateTimezoneId(timezoneId)) {
+ return TUnboxedValuePod();
+ }
+ SetTimezoneId(result, timezoneId);
+ }
+
+ auto& builder = valueBuilder->GetDateBuilder();
+ auto& storage = TTMStorage::Reference(result);
+ if (!storage.Validate(builder)) {
return TUnboxedValuePod();
}
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
}
}
@@ -667,7 +667,7 @@ namespace {
builder.Returns(optionalResourceType);
if (!typesOnly) {
- builder.Implementation(new TUpdate(builder.GetSourcePosition()));
+ builder.Implementation(new TUpdate(builder.GetSourcePosition()));
}
return true;
@@ -1028,11 +1028,11 @@ namespace {
private:
TUnboxedValue Run(const IValueBuilder*, const TUnboxedValuePod* args) const final try {
- return TUnboxedValuePod(new TFormat(args[0], Pos_));
+ return TUnboxedValuePod(new TFormat(args[0], Pos_));
} catch (const std::exception& e) {
UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
}
- const TSourcePosition Pos_;
+ const TSourcePosition Pos_;
};
static const TStringRef& Name() {
@@ -1063,7 +1063,7 @@ namespace {
}
private:
- const TSourcePosition Pos_;
+ const TSourcePosition Pos_;
const TUnboxedValue Format_;
std::vector<std::function<size_t(char*, const TUnboxedValuePod&, const IDateBuilder&)>> Printers_;
@@ -1083,36 +1083,36 @@ namespace {
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const override
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
- const auto value = args[0];
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
+ const auto value = args[0];
- auto& builder = valueBuilder->GetDateBuilder();
+ auto& builder = valueBuilder->GetDateBuilder();
- auto result = valueBuilder->NewStringNotFilled(ReservedSize_);
- auto pos = result.AsStringRef().Data();
- ui32 size = 0U;
+ auto result = valueBuilder->NewStringNotFilled(ReservedSize_);
+ auto pos = result.AsStringRef().Data();
+ ui32 size = 0U;
- for (const auto& printer : Printers_) {
- if (const auto plus = printer(pos, value, builder)) {
- size += plus;
- pos += plus;
- }
+ for (const auto& printer : Printers_) {
+ if (const auto plus = printer(pos, value, builder)) {
+ size += plus;
+ pos += plus;
+ }
}
- if (size < ReservedSize_) {
- result = valueBuilder->SubString(result.Release(), 0U, size);
- }
-
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ if (size < ReservedSize_) {
+ result = valueBuilder->SubString(result.Release(), 0U, size);
+ }
+
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
}
}
- TFormat(const TUnboxedValuePod& runConfig, TSourcePosition pos)
- : Pos_(pos)
- , Format_(runConfig)
+ TFormat(const TUnboxedValuePod& runConfig, TSourcePosition pos)
+ : Pos_(pos)
+ , Format_(runConfig)
{
const std::string_view formatView(Format_.AsStringRef());
auto dataStart = formatView.begin();
@@ -1334,12 +1334,12 @@ namespace {
private:
TUnboxedValue Run(const IValueBuilder*, const TUnboxedValuePod* args) const final try {
- return TUnboxedValuePod(new TParse(args[0], Pos_));
+ return TUnboxedValuePod(new TParse(args[0], Pos_));
} catch (const std::exception& e) {
UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
}
- const TSourcePosition Pos_;
+ const TSourcePosition Pos_;
};
static const TStringRef& Name() {
@@ -1374,7 +1374,7 @@ namespace {
}
private:
- const TSourcePosition Pos_;
+ const TSourcePosition Pos_;
const TUnboxedValue Format_;
std::vector<std::function<bool(std::string_view::const_iterator& it, size_t, TUnboxedValuePod&, const IDateBuilder&)>> Scanners_;
@@ -1395,36 +1395,36 @@ namespace {
const IValueBuilder* valueBuilder,
const TUnboxedValuePod* args) const override
{
- try {
- EMPTY_RESULT_ON_EMPTY_ARG(0);
-
- const std::string_view buffer = args[0].AsStringRef();
+ try {
+ EMPTY_RESULT_ON_EMPTY_ARG(0);
- TUnboxedValuePod result(0);
- auto& storage = TTMStorage::Reference(result);
- storage.MakeDefault();
+ const std::string_view buffer = args[0].AsStringRef();
- auto& builder = valueBuilder->GetDateBuilder();
+ TUnboxedValuePod result(0);
+ auto& storage = TTMStorage::Reference(result);
+ storage.MakeDefault();
- auto it = buffer.begin();
- for (const auto& scanner : Scanners_) {
- if (!scanner(it, std::distance(it, buffer.end()), result, builder)) {
- return TUnboxedValuePod();
- }
- }
+ auto& builder = valueBuilder->GetDateBuilder();
- if (buffer.end() != it || !storage.Validate(builder)) {
+ auto it = buffer.begin();
+ for (const auto& scanner : Scanners_) {
+ if (!scanner(it, std::distance(it, buffer.end()), result, builder)) {
+ return TUnboxedValuePod();
+ }
+ }
+
+ if (buffer.end() != it || !storage.Validate(builder)) {
return TUnboxedValuePod();
}
- return result;
- } catch (const std::exception& e) {
- UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
+ return result;
+ } catch (const std::exception& e) {
+ UdfTerminate((TStringBuilder() << Pos_ << " " << e.what()).data());
}
}
- TParse(const TUnboxedValuePod& runConfig, TSourcePosition pos)
- : Pos_(pos)
- , Format_(runConfig)
+ TParse(const TUnboxedValuePod& runConfig, TSourcePosition pos)
+ : Pos_(pos)
+ , Format_(runConfig)
{
const std::string_view formatView(Format_.AsStringRef());
auto dataStart = formatView.begin();
diff --git a/ydb/library/yql/udfs/common/json/json_udf.cpp b/ydb/library/yql/udfs/common/json/json_udf.cpp
index e994e589bd..cf9addee9a 100644
--- a/ydb/library/yql/udfs/common/json/json_udf.cpp
+++ b/ydb/library/yql/udfs/common/json/json_udf.cpp
@@ -8,9 +8,9 @@ using namespace NUdf;
namespace {
class TGetField: public TBoxedValue {
public:
- typedef bool TTypeAwareMarker;
-
- public:
+ typedef bool TTypeAwareMarker;
+
+ public:
static TStringRef Name() {
return TStringRef::Of("GetField");
}
@@ -58,19 +58,19 @@ namespace {
auto userTypeInspector = TTupleTypeInspector(*typeHelper, userType);
if (!userTypeInspector || userTypeInspector.GetElementsCount() < 1) {
builder.SetError("Missing or invalid user type.");
- return true;
+ return true;
}
auto argsTypeTuple = userTypeInspector.GetElementType(0);
auto argsTypeInspector = TTupleTypeInspector(*typeHelper, argsTypeTuple);
if (!argsTypeInspector) {
builder.SetError("Invalid user type - expected tuple.");
- return true;
+ return true;
}
if (argsTypeInspector.GetElementsCount() != 2) {
builder.SetError("Invalid user type - expected two arguments.");
- return true;
+ return true;
}
auto inputType = argsTypeInspector.GetElementType(0);
diff --git a/ydb/library/yql/udfs/common/math/lib/round.h b/ydb/library/yql/udfs/common/math/lib/round.h
index 2b33a6e8a8..4adda50415 100644
--- a/ydb/library/yql/udfs/common/math/lib/round.h
+++ b/ydb/library/yql/udfs/common/math/lib/round.h
@@ -1,43 +1,43 @@
#pragma once
-#include <util/system/types.h>
+#include <util/system/types.h>
#include <cmath>
-#include <optional>
-
-namespace NMathUdf {
+#include <optional>
+namespace NMathUdf {
+
template <class T>
inline T RoundToDecimal(T v, int decShift) {
T div = std::pow(T(10), decShift);
return std::floor(v / div + T(0.5)) * div;
}
-
-inline std::optional<i64> Mod(i64 value, i64 m) {
- if (!m) {
- return {};
- }
-
- const i64 result = value % m;
- if ((result < 0 && m > 0) || (result > 0 && m < 0)) {
- return result + m;
- }
- return result;
-}
-
-inline std::optional<i64> Rem(i64 value, i64 m) {
- if (!m) {
- return {};
- }
-
- const i64 result = value % m;
- if (result < 0 && value > 0) {
- return result + m;
- }
-
- if (result > 0 && value < 0) {
- return result - m;
- }
- return result;
-}
-
-}
+
+inline std::optional<i64> Mod(i64 value, i64 m) {
+ if (!m) {
+ return {};
+ }
+
+ const i64 result = value % m;
+ if ((result < 0 && m > 0) || (result > 0 && m < 0)) {
+ return result + m;
+ }
+ return result;
+}
+
+inline std::optional<i64> Rem(i64 value, i64 m) {
+ if (!m) {
+ return {};
+ }
+
+ const i64 result = value % m;
+ if (result < 0 && value > 0) {
+ return result + m;
+ }
+
+ if (result > 0 && value < 0) {
+ return result - m;
+ }
+ return result;
+}
+
+}
diff --git a/ydb/library/yql/udfs/common/math/lib/round_ut.cpp b/ydb/library/yql/udfs/common/math/lib/round_ut.cpp
index 81ded7d28c..8325b294cd 100644
--- a/ydb/library/yql/udfs/common/math/lib/round_ut.cpp
+++ b/ydb/library/yql/udfs/common/math/lib/round_ut.cpp
@@ -4,58 +4,58 @@
#include <util/string/hex.h>
-using namespace NMathUdf;
-
-Y_UNIT_TEST_SUITE(TRound) {
- Y_UNIT_TEST(Basic) {
+using namespace NMathUdf;
+
+Y_UNIT_TEST_SUITE(TRound) {
+ Y_UNIT_TEST(Basic) {
double value = 1930.0 / 3361.0;
- double result = RoundToDecimal<long double>(value, -3);
- double answer = 0.574;
- UNIT_ASSERT_VALUES_EQUAL(
- HexEncode(&result, sizeof(double)),
- HexEncode(&answer, sizeof(double)));
- }
-
- Y_UNIT_TEST(Mod) {
- UNIT_ASSERT_VALUES_EQUAL(*Mod(-1, 7), 6);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(1, 7), 1);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(0, 7), 0);
-
- UNIT_ASSERT_VALUES_EQUAL(*Mod(-1, -7), -1);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(1, -7), -6);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(0, -7), 0);
-
- UNIT_ASSERT_VALUES_EQUAL(*Mod(-15, 7), 6);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(15, 7), 1);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(14, 7), 0);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(-14, 7), 0);
-
- UNIT_ASSERT_VALUES_EQUAL(*Mod(-15, -7), -1);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(15, -7), -6);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(14, -7), 0);
- UNIT_ASSERT_VALUES_EQUAL(*Mod(-14, -7), 0);
-
- UNIT_ASSERT(!Mod(-14, 0));
- }
-
- Y_UNIT_TEST(Rem) {
- UNIT_ASSERT_VALUES_EQUAL(*Rem(-1, 7), -1);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(1, 7), 1);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(0, 7), 0);
-
- UNIT_ASSERT_VALUES_EQUAL(*Rem(-1, -7), -1);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(1, -7), 1);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(0, -7), 0);
-
- UNIT_ASSERT_VALUES_EQUAL(*Rem(-15, 7), -1);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(15, 7), 1);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(14, 7), 0);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(-14, 7), 0);
-
- UNIT_ASSERT_VALUES_EQUAL(*Rem(-15, -7), -1);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(15, -7), 1);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(14, -7), 0);
- UNIT_ASSERT_VALUES_EQUAL(*Rem(-14, -7), 0);
- UNIT_ASSERT(!Rem(-14, 0));
- }
+ double result = RoundToDecimal<long double>(value, -3);
+ double answer = 0.574;
+ UNIT_ASSERT_VALUES_EQUAL(
+ HexEncode(&result, sizeof(double)),
+ HexEncode(&answer, sizeof(double)));
+ }
+
+ Y_UNIT_TEST(Mod) {
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(-1, 7), 6);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(1, 7), 1);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(0, 7), 0);
+
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(-1, -7), -1);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(1, -7), -6);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(0, -7), 0);
+
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(-15, 7), 6);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(15, 7), 1);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(14, 7), 0);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(-14, 7), 0);
+
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(-15, -7), -1);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(15, -7), -6);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(14, -7), 0);
+ UNIT_ASSERT_VALUES_EQUAL(*Mod(-14, -7), 0);
+
+ UNIT_ASSERT(!Mod(-14, 0));
+ }
+
+ Y_UNIT_TEST(Rem) {
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(-1, 7), -1);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(1, 7), 1);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(0, 7), 0);
+
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(-1, -7), -1);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(1, -7), 1);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(0, -7), 0);
+
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(-15, 7), -1);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(15, 7), 1);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(14, 7), 0);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(-14, 7), 0);
+
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(-15, -7), -1);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(15, -7), 1);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(14, -7), 0);
+ UNIT_ASSERT_VALUES_EQUAL(*Rem(-14, -7), 0);
+ UNIT_ASSERT(!Rem(-14, 0));
+ }
}
diff --git a/ydb/library/yql/udfs/common/math/math_ir.h b/ydb/library/yql/udfs/common/math/math_ir.h
index 2386be96b9..6a3f6a1970 100644
--- a/ydb/library/yql/udfs/common/math/math_ir.h
+++ b/ydb/library/yql/udfs/common/math/math_ir.h
@@ -109,21 +109,21 @@ void FuzzyEqualsIR(const IBoxedValue* /*pThis*/, TUnboxedValuePod* result, const
extern "C" UDF_ALWAYS_INLINE
void RoundIR(const IBoxedValue* /*pThis*/, TUnboxedValuePod* result, const IValueBuilder* /*valueBuilder*/, const TUnboxedValuePod* args) {
- const double val = NMathUdf::RoundToDecimal<long double>(args[0].Get<double>(), args[1].GetOrDefault<int>(0));
+ const double val = NMathUdf::RoundToDecimal<long double>(args[0].Get<double>(), args[1].GetOrDefault<int>(0));
*result = TUnboxedValuePod(val);
}
-extern "C" UDF_ALWAYS_INLINE
-void ModIR(const IBoxedValue* /*pThis*/, TUnboxedValuePod* result, const IValueBuilder* /*valueBuilder*/, const TUnboxedValuePod* args) {
- const auto val = NMathUdf::Mod(args[0].Get<i64>(), args[1].Get<i64>());
- *result = val ? TUnboxedValuePod(*val) : TUnboxedValuePod();
-}
-
-extern "C" UDF_ALWAYS_INLINE
-void RemIR(const IBoxedValue* /*pThis*/, TUnboxedValuePod* result, const IValueBuilder* /*valueBuilder*/, const TUnboxedValuePod* args) {
- const auto val = NMathUdf::Rem(args[0].Get<i64>(), args[1].Get<i64>());
- *result = val ? TUnboxedValuePod(*val) : TUnboxedValuePod();
-}
-
+extern "C" UDF_ALWAYS_INLINE
+void ModIR(const IBoxedValue* /*pThis*/, TUnboxedValuePod* result, const IValueBuilder* /*valueBuilder*/, const TUnboxedValuePod* args) {
+ const auto val = NMathUdf::Mod(args[0].Get<i64>(), args[1].Get<i64>());
+ *result = val ? TUnboxedValuePod(*val) : TUnboxedValuePod();
+}
+
+extern "C" UDF_ALWAYS_INLINE
+void RemIR(const IBoxedValue* /*pThis*/, TUnboxedValuePod* result, const IValueBuilder* /*valueBuilder*/, const TUnboxedValuePod* args) {
+ const auto val = NMathUdf::Rem(args[0].Get<i64>(), args[1].Get<i64>());
+ *result = val ? TUnboxedValuePod(*val) : TUnboxedValuePod();
+}
+
} // NUdf
} // NYql
diff --git a/ydb/library/yql/udfs/common/math/math_udf.cpp b/ydb/library/yql/udfs/common/math/math_udf.cpp
index 04aaa29fea..13375e42b8 100644
--- a/ydb/library/yql/udfs/common/math/math_udf.cpp
+++ b/ydb/library/yql/udfs/common/math/math_udf.cpp
@@ -43,8 +43,8 @@
XX(IsNaN, bool(TAutoMap<double>), ;) \
XX(Sigmoid, double(TAutoMap<double>), ;) \
XX(FuzzyEquals, bool(TAutoMap<double>, TAutoMap<double>, TEpsilon), builder.OptionalArgs(1)) \
- XX(Mod, TOptional<i64>(TAutoMap<i64>, i64), ;) \
- XX(Rem, TOptional<i64>(TAutoMap<i64>, i64), ;) \
+ XX(Mod, TOptional<i64>(TAutoMap<i64>, i64), ;) \
+ XX(Rem, TOptional<i64>(TAutoMap<i64>, i64), ;) \
XXL(Round, double(TAutoMap<double>, TPrecision), builder.OptionalArgs(1))
#define MATH_UDF_IMPL(name, signature, options) \
diff --git a/ydb/library/yql/udfs/common/math/ya.make b/ydb/library/yql/udfs/common/math/ya.make
index 7aaedf9619..0b0107a977 100644
--- a/ydb/library/yql/udfs/common/math/ya.make
+++ b/ydb/library/yql/udfs/common/math/ya.make
@@ -56,8 +56,8 @@ LLVM_BC(
SigmoidIR
FuzzyEqualsIR
RoundIR
- ModIR
- RemIR
+ ModIR
+ RemIR
)
PEERDIR(
diff --git a/ydb/library/yql/udfs/common/re2/re2_udf.cpp b/ydb/library/yql/udfs/common/re2/re2_udf.cpp
index b478675fb6..e800fb3180 100644
--- a/ydb/library/yql/udfs/common/re2/re2_udf.cpp
+++ b/ydb/library/yql/udfs/common/re2/re2_udf.cpp
@@ -412,10 +412,10 @@ namespace {
void GetAllFunctions(IFunctionsSink& sink) const final {
sink.Add(TRe2Udf::Name(TRe2Udf::EMode::MATCH));
sink.Add(TRe2Udf::Name(TRe2Udf::EMode::GREP));
- sink.Add(TRe2Udf::Name(TRe2Udf::EMode::CAPTURE))->SetTypeAwareness();
+ sink.Add(TRe2Udf::Name(TRe2Udf::EMode::CAPTURE))->SetTypeAwareness();
sink.Add(TRe2Udf::Name(TRe2Udf::EMode::REPLACE));
sink.Add(TRe2Udf::Name(TRe2Udf::EMode::COUNT));
- sink.Add(TRe2Udf::Name(TRe2Udf::EMode::FIND_AND_CONSUME));
+ sink.Add(TRe2Udf::Name(TRe2Udf::EMode::FIND_AND_CONSUME));
sink.Add(TEscape::Name());
sink.Add(TPatternFromLike::Name());
sink.Add(TOptions::Name());
diff --git a/ydb/library/yql/udfs/common/string/string_udf.cpp b/ydb/library/yql/udfs/common/string/string_udf.cpp
index c468215090..bd5f990cc4 100644
--- a/ydb/library/yql/udfs/common/string/string_udf.cpp
+++ b/ydb/library/yql/udfs/common/string/string_udf.cpp
@@ -482,30 +482,30 @@ namespace {
return result;
}
- SIMPLE_UDF(TFromByteList, char*(TListType<ui8>)) {
- auto input = args[0];
-
- if (auto elems = input.GetElements()) {
- const auto elemCount = input.GetListLength();
- TUnboxedValue result = valueBuilder->NewStringNotFilled(input.GetListLength());
- auto bufferPtr = result.AsStringRef().Data();
- for (ui64 i = 0; i != elemCount; ++i) {
- *(bufferPtr++) = elems[i].Get<ui8>();
- }
- return result;
- }
-
- std::vector<char, NKikimr::NUdf::TStdAllocatorForUdf<char>> buffer;
- buffer.reserve(TUnboxedValuePod::InternalBufferSize);
-
- const auto& iter = input.GetListIterator();
- for (NUdf::TUnboxedValue item; iter.Next(item); ) {
- buffer.push_back(item.Get<ui8>());
- }
-
- return valueBuilder->NewString(TStringRef(buffer.data(), buffer.size()));
- }
-
+ SIMPLE_UDF(TFromByteList, char*(TListType<ui8>)) {
+ auto input = args[0];
+
+ if (auto elems = input.GetElements()) {
+ const auto elemCount = input.GetListLength();
+ TUnboxedValue result = valueBuilder->NewStringNotFilled(input.GetListLength());
+ auto bufferPtr = result.AsStringRef().Data();
+ for (ui64 i = 0; i != elemCount; ++i) {
+ *(bufferPtr++) = elems[i].Get<ui8>();
+ }
+ return result;
+ }
+
+ std::vector<char, NKikimr::NUdf::TStdAllocatorForUdf<char>> buffer;
+ buffer.reserve(TUnboxedValuePod::InternalBufferSize);
+
+ const auto& iter = input.GetListIterator();
+ for (NUdf::TUnboxedValue item; iter.Next(item); ) {
+ buffer.push_back(item.Get<ui8>());
+ }
+
+ return valueBuilder->NewString(TStringRef(buffer.data(), buffer.size()));
+ }
+
#define STRING_REGISTER_UDF(udfName, ...) T##udfName,
STRING_UDF_MAP(STRING_UDF)
@@ -552,8 +552,8 @@ namespace {
THumanReadableQuantity,
THumanReadableBytes,
TPrec,
- TToByteList,
- TFromByteList)
+ TToByteList,
+ TFromByteList)
}
REGISTER_MODULES(TStringModule)
diff --git a/ydb/library/yql/udfs/logs/dsv/dsv_udf.cpp b/ydb/library/yql/udfs/logs/dsv/dsv_udf.cpp
index b74bf80b18..16fe2256bd 100644
--- a/ydb/library/yql/udfs/logs/dsv/dsv_udf.cpp
+++ b/ydb/library/yql/udfs/logs/dsv/dsv_udf.cpp
@@ -206,7 +206,7 @@ public:
void GetAllFunctions(IFunctionsSink& sink) const final {
sink.Add(TStringRef::Of("ReadRecord"));
sink.Add(TStringRef::Of("Parse"));
- sink.Add(TStringRef::Of("Serialize"))->SetTypeAwareness();
+ sink.Add(TStringRef::Of("Serialize"))->SetTypeAwareness();
}
void BuildFunctionTypeInfo(
diff --git a/ydb/library/yql/utils/backtrace/backtrace.cpp b/ydb/library/yql/utils/backtrace/backtrace.cpp
index f9487f6671..dee2a6862c 100644
--- a/ydb/library/yql/utils/backtrace/backtrace.cpp
+++ b/ydb/library/yql/utils/backtrace/backtrace.cpp
@@ -96,12 +96,12 @@ void KikimrBacktraceFormatImpl(IOutputStream* out) {
void* array[300];
const size_t s = BackTrace(array, Y_ARRAY_SIZE(array));
KikimrBacktraceFormatImpl(out, array, s);
-}
-
+}
+
void KikimrBacktraceFormatImpl(IOutputStream* out, void* const* stack, size_t stackSize) {
- using namespace llvm;
- using namespace symbolize;
-
+ using namespace llvm;
+ using namespace symbolize;
+
TRawOStreamProxy outStream(*out);
THashMap<TString, TDllInfo> dlls;
#ifdef _linux_
@@ -111,8 +111,8 @@ void KikimrBacktraceFormatImpl(IOutputStream* out, void* const* stack, size_t st
DIPrinter printer(outStream, true, true, false);
LLVMSymbolizer::Options opts;
LLVMSymbolizer symbolyzer(opts);
- for (const auto i : xrange(stackSize)) {
- ui64 address = (ui64)stack[i] - 1; // last byte of the call instruction
+ for (const auto i : xrange(stackSize)) {
+ ui64 address = (ui64)stack[i] - 1; // last byte of the call instruction
ui64 offset = 0;
TString modulePath = binaryPath;
#ifdef _linux_
diff --git a/ydb/library/yql/utils/bind_in_range.cpp b/ydb/library/yql/utils/bind_in_range.cpp
index 75942f9038..9bcbfc329a 100644
--- a/ydb/library/yql/utils/bind_in_range.cpp
+++ b/ydb/library/yql/utils/bind_in_range.cpp
@@ -1,27 +1,27 @@
-#include "bind_in_range.h"
-
+#include "bind_in_range.h"
+
#include <ydb/library/yql/utils/log/log.h>
-#include <util/datetime/base.h>
-
-namespace NYql {
-
-TVector<NBus::TBindResult> BindInRange(TRangeWalker<int>& portWalker) {
- const int cyclesLimit = 3;
- const int rangeSize = portWalker.GetRangeSize();
- const auto cycleDelay = TDuration::Seconds(3);
-
- for (int cycle = 0; cycle < cyclesLimit; ++cycle) {
- for (int i = 0; i < rangeSize; ++i) {
- try {
+#include <util/datetime/base.h>
+
+namespace NYql {
+
+TVector<NBus::TBindResult> BindInRange(TRangeWalker<int>& portWalker) {
+ const int cyclesLimit = 3;
+ const int rangeSize = portWalker.GetRangeSize();
+ const auto cycleDelay = TDuration::Seconds(3);
+
+ for (int cycle = 0; cycle < cyclesLimit; ++cycle) {
+ for (int i = 0; i < rangeSize; ++i) {
+ try {
return NBus::BindOnPort(portWalker.MoveToNext(), false).second;
- } catch (const TSystemError&) {
- YQL_LOG(DEBUG) << CurrentExceptionMessage();
- }
- }
-
- Sleep(cycleDelay);
- }
-
- ythrow yexception() << "Unable to bind within port range [" << portWalker.GetStart() << ", " << portWalker.GetFinish() << "]";
-}
-}
+ } catch (const TSystemError&) {
+ YQL_LOG(DEBUG) << CurrentExceptionMessage();
+ }
+ }
+
+ Sleep(cycleDelay);
+ }
+
+ ythrow yexception() << "Unable to bind within port range [" << portWalker.GetStart() << ", " << portWalker.GetFinish() << "]";
+}
+}
diff --git a/ydb/library/yql/utils/bind_in_range.h b/ydb/library/yql/utils/bind_in_range.h
index 28c6069f81..67bf1ff25c 100644
--- a/ydb/library/yql/utils/bind_in_range.h
+++ b/ydb/library/yql/utils/bind_in_range.h
@@ -1,8 +1,8 @@
-#pragma once
-
+#pragma once
+
#include <ydb/library/yql/utils/range_walker.h>
#include <library/cpp/messagebus/network.h>
-
-namespace NYql {
-TVector<NBus::TBindResult> BindInRange(TRangeWalker<int>& portWalker);
-}
+
+namespace NYql {
+TVector<NBus::TBindResult> BindInRange(TRangeWalker<int>& portWalker);
+}
diff --git a/ydb/library/yql/utils/fetch/fetch.cpp b/ydb/library/yql/utils/fetch/fetch.cpp
index 100c88c385..5e822fafad 100644
--- a/ydb/library/yql/utils/fetch/fetch.cpp
+++ b/ydb/library/yql/utils/fetch/fetch.cpp
@@ -67,9 +67,9 @@ public:
Socket.Reset(new TSocket(TNetworkAddress(host, port), timeout));
SocketInput.Reset(new TSocketInput(*Socket));
SocketOutput.Reset(new TSocketOutput(*Socket));
-
- Socket->SetSocketTimeout(timeout.Seconds(), timeout.MilliSeconds() % 1000);
-
+
+ Socket->SetSocketTimeout(timeout.Seconds(), timeout.MilliSeconds() % 1000);
+
if (https) {
Ssl.Reset(new TOpenSslClientIO(SocketInput.Get(), SocketOutput.Get()));
}
@@ -156,18 +156,18 @@ TFetchResultPtr Fetch(const THttpURL& url, const THttpHeaders& additionalHeaders
if (responseCode >= 200 && responseCode < 300) {
return fr;
- }
-
- if (responseCode == HTTP_NOT_MODIFIED) {
- return fr;
- }
-
- if (IsRedirectCode(responseCode)) {
+ }
+
+ if (responseCode == HTTP_NOT_MODIFIED) {
+ return fr;
+ }
+
+ if (IsRedirectCode(responseCode)) {
currentUrl = fr->GetRedirectURL(currentUrl);
YQL_LOG(INFO) << "Got redirect to " << currentUrl.PrintS();
- continue;
+ continue;
}
-
+
TString errorBody;
try {
errorBody = fr->GetStream().ReadAll();
diff --git a/ydb/library/yql/utils/future_action.cpp b/ydb/library/yql/utils/future_action.cpp
index 26deb8de7e..64c0942042 100644
--- a/ydb/library/yql/utils/future_action.cpp
+++ b/ydb/library/yql/utils/future_action.cpp
@@ -1 +1 @@
-#include "future_action.h"
+#include "future_action.h"
diff --git a/ydb/library/yql/utils/future_action.h b/ydb/library/yql/utils/future_action.h
index d4a8dd69aa..cdf6d377c4 100644
--- a/ydb/library/yql/utils/future_action.h
+++ b/ydb/library/yql/utils/future_action.h
@@ -1,59 +1,59 @@
-#pragma once
-
+#pragma once
+
#include <library/cpp/threading/future/future.h>
-
-namespace NYql {
-/*
-Let's call 'action' attached functor to future which should be called in the main thread.
-This trick allows us to execute attached actions not in the future's execution thread but rather in the main thread
-and preserve single-threaded logic.
-*/
-
-/*
-Make ready future with constant action inside.
-*/
-template <typename T>
-NThreading::TFuture<std::function<T()>> MakeFutureWithConstantAction(const T& value) {
- return NThreading::MakeFuture<std::function<T()>>([value]() {
- return value;
- });
-}
-
-template <typename T, typename A>
-auto AddActionToFuture(NThreading::TFuture<T> f, const A& action) {
- using V = decltype(action(std::declval<T>()));
-
- return f.Apply([action](NThreading::TFuture<T> f) {
- std::function<V()> r = [f, action]() {
- return action(f.GetValue());
- };
-
- return r;
- });
-}
-
-/*
-Apply continuation with constant action
-*/
-template <typename T, typename V>
-NThreading::TFuture<std::function<V()>> AddConstantActionToFuture(NThreading::TFuture<T> f, const V& value) {
- return AddActionToFuture(f, [value](const T&) { return value; });
-}
-
-/*
-Transform action result by applying mapper
-*/
-template <typename R, typename TMapper, typename ...Args>
-auto MapFutureAction(NThreading::TFuture<std::function<R(Args&&...)>> f, const TMapper& mapper) {
- using V = decltype(mapper(std::declval<R>()));
-
- return f.Apply([mapper](NThreading::TFuture<std::function<R(Args&&...)>> f) {
- std::function<V(Args&&...)> r = [f, mapper](Args&& ...args) {
- return mapper(f.GetValue()(std::forward<Args>(args)...));
- };
-
- return r;
- });
-}
-
-}
+
+namespace NYql {
+/*
+Let's call 'action' attached functor to future which should be called in the main thread.
+This trick allows us to execute attached actions not in the future's execution thread but rather in the main thread
+and preserve single-threaded logic.
+*/
+
+/*
+Make ready future with constant action inside.
+*/
+template <typename T>
+NThreading::TFuture<std::function<T()>> MakeFutureWithConstantAction(const T& value) {
+ return NThreading::MakeFuture<std::function<T()>>([value]() {
+ return value;
+ });
+}
+
+template <typename T, typename A>
+auto AddActionToFuture(NThreading::TFuture<T> f, const A& action) {
+ using V = decltype(action(std::declval<T>()));
+
+ return f.Apply([action](NThreading::TFuture<T> f) {
+ std::function<V()> r = [f, action]() {
+ return action(f.GetValue());
+ };
+
+ return r;
+ });
+}
+
+/*
+Apply continuation with constant action
+*/
+template <typename T, typename V>
+NThreading::TFuture<std::function<V()>> AddConstantActionToFuture(NThreading::TFuture<T> f, const V& value) {
+ return AddActionToFuture(f, [value](const T&) { return value; });
+}
+
+/*
+Transform action result by applying mapper
+*/
+template <typename R, typename TMapper, typename ...Args>
+auto MapFutureAction(NThreading::TFuture<std::function<R(Args&&...)>> f, const TMapper& mapper) {
+ using V = decltype(mapper(std::declval<R>()));
+
+ return f.Apply([mapper](NThreading::TFuture<std::function<R(Args&&...)>> f) {
+ std::function<V(Args&&...)> r = [f, mapper](Args&& ...args) {
+ return mapper(f.GetValue()(std::forward<Args>(args)...));
+ };
+
+ return r;
+ });
+}
+
+}
diff --git a/ydb/library/yql/utils/md5_stream.cpp b/ydb/library/yql/utils/md5_stream.cpp
index 8a1c219164..1c7f887a60 100644
--- a/ydb/library/yql/utils/md5_stream.cpp
+++ b/ydb/library/yql/utils/md5_stream.cpp
@@ -1,20 +1,20 @@
-#include "md5_stream.h"
-
-namespace NYql {
-
-TMd5OutputStream::TMd5OutputStream(IOutputStream& delegatee)
- : Delegatee_(delegatee)
-{
-}
-
-TString TMd5OutputStream::Finalize() {
- char buf[33] = { 0 };
- return TString(Accumulator_.End(buf));
-}
-
-void TMd5OutputStream::DoWrite(const void* buf, size_t len) {
- Delegatee_.Write(buf, len);
- Accumulator_.Update(buf, len);
-}
-
-}
+#include "md5_stream.h"
+
+namespace NYql {
+
+TMd5OutputStream::TMd5OutputStream(IOutputStream& delegatee)
+ : Delegatee_(delegatee)
+{
+}
+
+TString TMd5OutputStream::Finalize() {
+ char buf[33] = { 0 };
+ return TString(Accumulator_.End(buf));
+}
+
+void TMd5OutputStream::DoWrite(const void* buf, size_t len) {
+ Delegatee_.Write(buf, len);
+ Accumulator_.Update(buf, len);
+}
+
+}
diff --git a/ydb/library/yql/utils/md5_stream.h b/ydb/library/yql/utils/md5_stream.h
index ca8b1c4bb9..c8649f6ad4 100644
--- a/ydb/library/yql/utils/md5_stream.h
+++ b/ydb/library/yql/utils/md5_stream.h
@@ -1,19 +1,19 @@
-#pragma once
-
-#include <util/stream/output.h>
+#pragma once
+
+#include <util/stream/output.h>
#include <library/cpp/digest/md5/md5.h>
-
-namespace NYql {
-class TMd5OutputStream : public IOutputStream {
-public:
- explicit TMd5OutputStream(IOutputStream& delegatee);
- TString Finalize();
-
-private:
- void DoWrite(const void* buf, size_t len) override;
-
-private:
- IOutputStream& Delegatee_;
- MD5 Accumulator_;
-};
-}
+
+namespace NYql {
+class TMd5OutputStream : public IOutputStream {
+public:
+ explicit TMd5OutputStream(IOutputStream& delegatee);
+ TString Finalize();
+
+private:
+ void DoWrite(const void* buf, size_t len) override;
+
+private:
+ IOutputStream& Delegatee_;
+ MD5 Accumulator_;
+};
+}
diff --git a/ydb/library/yql/utils/md5_stream_ut.cpp b/ydb/library/yql/utils/md5_stream_ut.cpp
index 1d04c632d4..d44da69dc0 100644
--- a/ydb/library/yql/utils/md5_stream_ut.cpp
+++ b/ydb/library/yql/utils/md5_stream_ut.cpp
@@ -1,47 +1,47 @@
-#include "md5_stream.h"
-#include <util/stream/input.h>
-#include <util/stream/str.h>
+#include "md5_stream.h"
+#include <util/stream/input.h>
+#include <util/stream/str.h>
#include <library/cpp/testing/unittest/registar.h>
-
-using namespace NYql;
-
-namespace {
-TString Consume(const TString& input) {
- TStringInput s(input);
-
- TString output;
- TStringOutput outputStream(output);
- TMd5OutputStream md5Stream(outputStream);
-
- UNIT_ASSERT_VALUES_EQUAL(input.size(), TransferData(&s, &md5Stream));
- UNIT_ASSERT_VALUES_EQUAL(input, output);
- return md5Stream.Finalize();
-}
-}
-
+
+using namespace NYql;
+
+namespace {
+TString Consume(const TString& input) {
+ TStringInput s(input);
+
+ TString output;
+ TStringOutput outputStream(output);
+ TMd5OutputStream md5Stream(outputStream);
+
+ UNIT_ASSERT_VALUES_EQUAL(input.size(), TransferData(&s, &md5Stream));
+ UNIT_ASSERT_VALUES_EQUAL(input, output);
+ return md5Stream.Finalize();
+}
+}
+
Y_UNIT_TEST_SUITE(TStreamMd5Tests) {
Y_UNIT_TEST(Empty) {
- const auto md5 = Consume("");
- const TString emptyStringMd5 = "d41d8cd98f00b204e9800998ecf8427e";
- UNIT_ASSERT_VALUES_EQUAL(md5, emptyStringMd5);
- }
-
+ const auto md5 = Consume("");
+ const TString emptyStringMd5 = "d41d8cd98f00b204e9800998ecf8427e";
+ UNIT_ASSERT_VALUES_EQUAL(md5, emptyStringMd5);
+ }
+
Y_UNIT_TEST(ShortText) {
- const auto md5 = Consume("hello from Y!");
- const TString expectedMd5 = "abf59ed7b0daa71085e76e461a737cc2";
- UNIT_ASSERT_VALUES_EQUAL(md5, expectedMd5);
- }
-
+ const auto md5 = Consume("hello from Y!");
+ const TString expectedMd5 = "abf59ed7b0daa71085e76e461a737cc2";
+ UNIT_ASSERT_VALUES_EQUAL(md5, expectedMd5);
+ }
+
Y_UNIT_TEST(BigText) {
- // TransferData uses TempBuf of 64K
- const TString s(1000000, 'A');
- const auto md5 = Consume(s.c_str());
- /*
- $ for i in {1..1000000};do echo -n A >> 1M.txt;done
- $ md5sum 1M.txt
- 48fcdb8b87ce8ef779774199a856091d 1M.txt
- */
- const TString expectedMd5 = "48fcdb8b87ce8ef779774199a856091d";
- UNIT_ASSERT_VALUES_EQUAL(md5, expectedMd5);
- }
-}
+ // TransferData uses TempBuf of 64K
+ const TString s(1000000, 'A');
+ const auto md5 = Consume(s.c_str());
+ /*
+ $ for i in {1..1000000};do echo -n A >> 1M.txt;done
+ $ md5sum 1M.txt
+ 48fcdb8b87ce8ef779774199a856091d 1M.txt
+ */
+ const TString expectedMd5 = "48fcdb8b87ce8ef779774199a856091d";
+ UNIT_ASSERT_VALUES_EQUAL(md5, expectedMd5);
+ }
+}
diff --git a/ydb/library/yql/utils/multi_resource_lock.cpp b/ydb/library/yql/utils/multi_resource_lock.cpp
index b771308236..8eda74c3e0 100644
--- a/ydb/library/yql/utils/multi_resource_lock.cpp
+++ b/ydb/library/yql/utils/multi_resource_lock.cpp
@@ -1,42 +1,42 @@
-#include "multi_resource_lock.h"
-
-using namespace NYql;
-
-TMultiResourceLock::TResourceLock TMultiResourceLock::Acquire(TString resourceId) {
- TLock::TPtr lock = ProvideResourceLock(resourceId);
-
- // resource-specific mutex should be locked outside of Guard_ lock
- return { *this, std::move(lock), std::move(resourceId) };
-}
-
-TMultiResourceLock::~TMultiResourceLock() {
- with_lock(Guard_) {
+#include "multi_resource_lock.h"
+
+using namespace NYql;
+
+TMultiResourceLock::TResourceLock TMultiResourceLock::Acquire(TString resourceId) {
+ TLock::TPtr lock = ProvideResourceLock(resourceId);
+
+ // resource-specific mutex should be locked outside of Guard_ lock
+ return { *this, std::move(lock), std::move(resourceId) };
+}
+
+TMultiResourceLock::~TMultiResourceLock() {
+ with_lock(Guard_) {
Y_VERIFY(Locks_.empty(), "~TMultiResourceLock: we still have %lu unreleased locks", Locks_.size());
- }
-}
-
-TMultiResourceLock::TLock::TPtr TMultiResourceLock::ProvideResourceLock(const TString& resourceId) {
- with_lock(Guard_) {
- auto it = Locks_.find(resourceId);
- if (it == Locks_.end()) {
- it = Locks_.emplace(resourceId, MakeIntrusive<TLock>()).first;
- }
-
- // important: ref count will be incremented under lock
- // in this case we have guarantee TryCleanup will not erase this resource just after exit from this method and before entering lock->Mutex_.Acquire()
- return it->second;
- }
-}
-
-void TMultiResourceLock::TryCleanup(const TString& resourceId) {
- with_lock(Guard_) {
- auto it = Locks_.find(resourceId);
- if (it == Locks_.end()) {
- return;
- }
-
- if (it->second->IsUnique()) {
- Locks_.erase(it);
- }
- }
-}
+ }
+}
+
+TMultiResourceLock::TLock::TPtr TMultiResourceLock::ProvideResourceLock(const TString& resourceId) {
+ with_lock(Guard_) {
+ auto it = Locks_.find(resourceId);
+ if (it == Locks_.end()) {
+ it = Locks_.emplace(resourceId, MakeIntrusive<TLock>()).first;
+ }
+
+ // important: ref count will be incremented under lock
+ // in this case we have guarantee TryCleanup will not erase this resource just after exit from this method and before entering lock->Mutex_.Acquire()
+ return it->second;
+ }
+}
+
+void TMultiResourceLock::TryCleanup(const TString& resourceId) {
+ with_lock(Guard_) {
+ auto it = Locks_.find(resourceId);
+ if (it == Locks_.end()) {
+ return;
+ }
+
+ if (it->second->IsUnique()) {
+ Locks_.erase(it);
+ }
+ }
+}
diff --git a/ydb/library/yql/utils/multi_resource_lock.h b/ydb/library/yql/utils/multi_resource_lock.h
index 61804fa9a4..4e75965787 100644
--- a/ydb/library/yql/utils/multi_resource_lock.h
+++ b/ydb/library/yql/utils/multi_resource_lock.h
@@ -1,81 +1,81 @@
-#pragma once
-
-#include "yql_panic.h"
-
-#include <util/generic/map.h>
-#include <util/generic/ptr.h>
-#include <util/generic/string.h>
-#include <util/system/mutex.h>
-
-namespace NYql {
-
-class TMultiResourceLock : private TNonCopyable {
-private:
- struct TLock : public TThrRefBase {
- typedef TIntrusivePtr<TLock> TPtr;
-
- bool IsUnique() const {
- return RefCount() == 1;
- }
-
- TMutex Mutex_;
- };
-
-public:
- struct TResourceLock : private TNonCopyable {
- TResourceLock(TMultiResourceLock& owner, TLock::TPtr lock, TString resourceId)
- : Owner_(owner)
- , Lock_(std::move(lock))
- , ResourceId_(std::move(resourceId))
- {
- Y_ENSURE(Lock_);
- Lock_->Mutex_.Acquire();
- }
-
- TResourceLock(TResourceLock&& other)
- : Owner_(other.Owner_)
- , Lock_(std::move(other.Lock_))
- , ResourceId_(std::move(other.ResourceId_))
- {
-
- }
-
- TResourceLock& operator=(TResourceLock&&) = delete;
-
- ~TResourceLock() {
- if (!Lock_) {
- return;
- }
-
- Lock_->Mutex_.Release();
- // decrement ref count before TryCleanup
- Lock_ = nullptr;
- Owner_.TryCleanup(ResourceId_);
- }
-
- private:
- TMultiResourceLock& Owner_;
- TLock::TPtr Lock_;
- TString ResourceId_;
- };
-
- TResourceLock Acquire(TString resourceId);
-
- template <typename F>
- auto RunWithLock(TString resourceId, const F& f) -> decltype(f()) {
- auto lock = Acquire(std::move(resourceId));
- return f();
- }
-
- ~TMultiResourceLock();
-
-private:
- TLock::TPtr ProvideResourceLock(const TString& resourceId);
- void TryCleanup(const TString& resourceId);
-
-private:
- TMutex Guard_;
- TMap<TString, TLock::TPtr> Locks_;
-};
-
-}
+#pragma once
+
+#include "yql_panic.h"
+
+#include <util/generic/map.h>
+#include <util/generic/ptr.h>
+#include <util/generic/string.h>
+#include <util/system/mutex.h>
+
+namespace NYql {
+
+class TMultiResourceLock : private TNonCopyable {
+private:
+ struct TLock : public TThrRefBase {
+ typedef TIntrusivePtr<TLock> TPtr;
+
+ bool IsUnique() const {
+ return RefCount() == 1;
+ }
+
+ TMutex Mutex_;
+ };
+
+public:
+ struct TResourceLock : private TNonCopyable {
+ TResourceLock(TMultiResourceLock& owner, TLock::TPtr lock, TString resourceId)
+ : Owner_(owner)
+ , Lock_(std::move(lock))
+ , ResourceId_(std::move(resourceId))
+ {
+ Y_ENSURE(Lock_);
+ Lock_->Mutex_.Acquire();
+ }
+
+ TResourceLock(TResourceLock&& other)
+ : Owner_(other.Owner_)
+ , Lock_(std::move(other.Lock_))
+ , ResourceId_(std::move(other.ResourceId_))
+ {
+
+ }
+
+ TResourceLock& operator=(TResourceLock&&) = delete;
+
+ ~TResourceLock() {
+ if (!Lock_) {
+ return;
+ }
+
+ Lock_->Mutex_.Release();
+ // decrement ref count before TryCleanup
+ Lock_ = nullptr;
+ Owner_.TryCleanup(ResourceId_);
+ }
+
+ private:
+ TMultiResourceLock& Owner_;
+ TLock::TPtr Lock_;
+ TString ResourceId_;
+ };
+
+ TResourceLock Acquire(TString resourceId);
+
+ template <typename F>
+ auto RunWithLock(TString resourceId, const F& f) -> decltype(f()) {
+ auto lock = Acquire(std::move(resourceId));
+ return f();
+ }
+
+ ~TMultiResourceLock();
+
+private:
+ TLock::TPtr ProvideResourceLock(const TString& resourceId);
+ void TryCleanup(const TString& resourceId);
+
+private:
+ TMutex Guard_;
+ TMap<TString, TLock::TPtr> Locks_;
+};
+
+}
diff --git a/ydb/library/yql/utils/multi_resource_lock_ut.cpp b/ydb/library/yql/utils/multi_resource_lock_ut.cpp
index 0af9cea3ff..2752da8ec8 100644
--- a/ydb/library/yql/utils/multi_resource_lock_ut.cpp
+++ b/ydb/library/yql/utils/multi_resource_lock_ut.cpp
@@ -1,54 +1,54 @@
-#include "multi_resource_lock.h"
-#include <util/generic/xrange.h>
+#include "multi_resource_lock.h"
+#include <util/generic/xrange.h>
#include <library/cpp/threading/future/async.h>
#include <library/cpp/testing/unittest/registar.h>
-
-namespace NYql {
-using namespace NThreading;
-
+
+namespace NYql {
+using namespace NThreading;
+
Y_UNIT_TEST_SUITE(TMultiResourceLock) {
Y_UNIT_TEST(ManyResources) {
- TMultiResourceLock multiLock;
- const int workersCount = 3;
- TVector<TVector<int>> workersData;
- workersData.resize(workersCount);
-
+ TMultiResourceLock multiLock;
+ const int workersCount = 3;
+ TVector<TVector<int>> workersData;
+ workersData.resize(workersCount);
+
TAdaptiveThreadPool queue;
- queue.Start(0);
-
- TVector<NThreading::TFuture<void>> workers;
- workers.reserve(workersCount);
- TManualEvent startEvent;
-
- for (int i = 0; i < workersCount; ++i) {
- TString resourceId = ToString(i);
- TVector<int>& data = workersData.at(i);
- NThreading::TFuture<void> f = NThreading::Async([&, resourceId]() {
- startEvent.Wait();
-
- for (int j = 0; j < 1000; ++j) {
- const auto& l = multiLock.Acquire(resourceId);
- Y_UNUSED(l);
- data.push_back(j);
- }
- }, queue);
-
- workers.push_back(std::move(f));
- }
-
- startEvent.Signal();
-
+ queue.Start(0);
+
+ TVector<NThreading::TFuture<void>> workers;
+ workers.reserve(workersCount);
+ TManualEvent startEvent;
+
+ for (int i = 0; i < workersCount; ++i) {
+ TString resourceId = ToString(i);
+ TVector<int>& data = workersData.at(i);
+ NThreading::TFuture<void> f = NThreading::Async([&, resourceId]() {
+ startEvent.Wait();
+
+ for (int j = 0; j < 1000; ++j) {
+ const auto& l = multiLock.Acquire(resourceId);
+ Y_UNUSED(l);
+ data.push_back(j);
+ }
+ }, queue);
+
+ workers.push_back(std::move(f));
+ }
+
+ startEvent.Signal();
+
NThreading::TFuture<void> all = NThreading::WaitExceptionOrAll(workers);
- all.GetValueSync();
- queue.Stop();
-
- // analyze workersData:
- auto range0_999 = xrange(0, 1000);
- for (auto& w : workersData) {
- UNIT_ASSERT_VALUES_EQUAL(w.size(), 1000);
- UNIT_ASSERT(std::equal(range0_999.begin(), range0_999.end(), w.begin()));
- }
- }
-}
-
-}
+ all.GetValueSync();
+ queue.Stop();
+
+ // analyze workersData:
+ auto range0_999 = xrange(0, 1000);
+ for (auto& w : workersData) {
+ UNIT_ASSERT_VALUES_EQUAL(w.size(), 1000);
+ UNIT_ASSERT(std::equal(range0_999.begin(), range0_999.end(), w.begin()));
+ }
+ }
+}
+
+}
diff --git a/ydb/library/yql/utils/parse_double.cpp b/ydb/library/yql/utils/parse_double.cpp
index 0c06ad9544..2b49b503ff 100644
--- a/ydb/library/yql/utils/parse_double.cpp
+++ b/ydb/library/yql/utils/parse_double.cpp
@@ -1,70 +1,70 @@
-#include "parse_double.h"
-
-#include <util/string/ascii.h>
-#include <util/string/cast.h>
-
-namespace NYql {
-
-namespace {
-template <typename T>
-bool GenericTryFloatFromString(TStringBuf buf, T& value) {
- value = 0;
+#include "parse_double.h"
+
+#include <util/string/ascii.h>
+#include <util/string/cast.h>
+
+namespace NYql {
+
+namespace {
+template <typename T>
+bool GenericTryFloatFromString(TStringBuf buf, T& value) {
+ value = 0;
if (!buf.size() || !TryFromString(buf.data(), buf.size(), value)) {
const char* ptr = buf.data();
ui32 size = buf.size();
- char sign = '+';
- if (*ptr == '+' || *ptr == '-') {
- sign = *ptr;
- ++ptr;
- --size;
- }
-
- if (size != 3) {
- return false;
- }
-
- // NaN or Inf (ignoring case)
- if (AsciiToUpper(ptr[0]) == 'N' && AsciiToUpper(ptr[1]) == 'A' && AsciiToUpper(ptr[2]) == 'N') {
- value = std::numeric_limits<T>::quiet_NaN();
- } else if (AsciiToUpper(ptr[0]) == 'I' && AsciiToUpper(ptr[1]) == 'N' && AsciiToUpper(ptr[2]) == 'F') {
- value = std::numeric_limits<T>::infinity();
- } else {
- return false;
- }
-
- if (sign == '-') {
- value = -value;
- }
- }
-
- return true;
-}
-}
-
-float FloatFromString(TStringBuf buf) {
- float result = 0;
- if (!TryFloatFromString(buf, result)) {
- throw yexception() << "unable to parse float from '" << buf << "'";
- }
-
- return result;
-}
-
-double DoubleFromString(TStringBuf buf) {
- double result = 0;
- if (!TryDoubleFromString(buf, result)) {
- throw yexception() << "unable to parse double from '" << buf << "'";
- }
-
- return result;
-}
-
-bool TryFloatFromString(TStringBuf buf, float& value) {
- return GenericTryFloatFromString(buf, value);
-}
-
-bool TryDoubleFromString(TStringBuf buf, double& value) {
- return GenericTryFloatFromString(buf, value);
-}
-
-}
+ char sign = '+';
+ if (*ptr == '+' || *ptr == '-') {
+ sign = *ptr;
+ ++ptr;
+ --size;
+ }
+
+ if (size != 3) {
+ return false;
+ }
+
+ // NaN or Inf (ignoring case)
+ if (AsciiToUpper(ptr[0]) == 'N' && AsciiToUpper(ptr[1]) == 'A' && AsciiToUpper(ptr[2]) == 'N') {
+ value = std::numeric_limits<T>::quiet_NaN();
+ } else if (AsciiToUpper(ptr[0]) == 'I' && AsciiToUpper(ptr[1]) == 'N' && AsciiToUpper(ptr[2]) == 'F') {
+ value = std::numeric_limits<T>::infinity();
+ } else {
+ return false;
+ }
+
+ if (sign == '-') {
+ value = -value;
+ }
+ }
+
+ return true;
+}
+}
+
+float FloatFromString(TStringBuf buf) {
+ float result = 0;
+ if (!TryFloatFromString(buf, result)) {
+ throw yexception() << "unable to parse float from '" << buf << "'";
+ }
+
+ return result;
+}
+
+double DoubleFromString(TStringBuf buf) {
+ double result = 0;
+ if (!TryDoubleFromString(buf, result)) {
+ throw yexception() << "unable to parse double from '" << buf << "'";
+ }
+
+ return result;
+}
+
+bool TryFloatFromString(TStringBuf buf, float& value) {
+ return GenericTryFloatFromString(buf, value);
+}
+
+bool TryDoubleFromString(TStringBuf buf, double& value) {
+ return GenericTryFloatFromString(buf, value);
+}
+
+}
diff --git a/ydb/library/yql/utils/parse_double.h b/ydb/library/yql/utils/parse_double.h
index 61d1d940c9..400dd48330 100644
--- a/ydb/library/yql/utils/parse_double.h
+++ b/ydb/library/yql/utils/parse_double.h
@@ -1,18 +1,18 @@
-#pragma once
-
-#include <util/generic/strbuf.h>
-
-namespace NYql {
-
-/*
-These parse functions can understand nan, inf, -inf case-insensitively
-They do not parse empty string to zero
-*/
-
-float FloatFromString(TStringBuf buf);
-double DoubleFromString(TStringBuf buf);
-
-bool TryFloatFromString(TStringBuf buf, float& value);
-bool TryDoubleFromString(TStringBuf buf, double& value);
-
-}
+#pragma once
+
+#include <util/generic/strbuf.h>
+
+namespace NYql {
+
+/*
+These parse functions can understand nan, inf, -inf case-insensitively
+They do not parse empty string to zero
+*/
+
+float FloatFromString(TStringBuf buf);
+double DoubleFromString(TStringBuf buf);
+
+bool TryFloatFromString(TStringBuf buf, float& value);
+bool TryDoubleFromString(TStringBuf buf, double& value);
+
+}
diff --git a/ydb/library/yql/utils/parse_double_ut.cpp b/ydb/library/yql/utils/parse_double_ut.cpp
index 6f9cdea2f1..fc63d5c297 100644
--- a/ydb/library/yql/utils/parse_double_ut.cpp
+++ b/ydb/library/yql/utils/parse_double_ut.cpp
@@ -1,52 +1,52 @@
-#include "parse_double.h"
+#include "parse_double.h"
#include <library/cpp/testing/unittest/registar.h>
-
-namespace NYql {
-
-Y_UNIT_TEST_SUITE(TParseDouble) {
-
- template <typename T, typename F>
- void ParseAndCheck(TStringBuf buf, F f, T expected) {
- T result = 0;
- UNIT_ASSERT(f(buf, result));
- UNIT_ASSERT_DOUBLES_EQUAL(expected, result, 1e-6);
- }
-
- Y_UNIT_TEST(ExactValues) {
+
+namespace NYql {
+
+Y_UNIT_TEST_SUITE(TParseDouble) {
+
+ template <typename T, typename F>
+ void ParseAndCheck(TStringBuf buf, F f, T expected) {
+ T result = 0;
+ UNIT_ASSERT(f(buf, result));
+ UNIT_ASSERT_DOUBLES_EQUAL(expected, result, 1e-6);
+ }
+
+ Y_UNIT_TEST(ExactValues) {
ParseAndCheck(TStringBuf("nan"), TryFloatFromString, std::numeric_limits<float>::quiet_NaN());
ParseAndCheck(TStringBuf("nAn"), TryDoubleFromString, std::numeric_limits<double>::quiet_NaN());
-
+
ParseAndCheck(TStringBuf("+nan"), TryFloatFromString, std::numeric_limits<float>::quiet_NaN());
ParseAndCheck(TStringBuf("+NAN"), TryDoubleFromString, std::numeric_limits<double>::quiet_NaN());
-
+
ParseAndCheck(TStringBuf("-nan"), TryFloatFromString, std::numeric_limits<float>::quiet_NaN());
ParseAndCheck(TStringBuf("-NaN"), TryDoubleFromString, std::numeric_limits<double>::quiet_NaN());
-
+
ParseAndCheck(TStringBuf("inf"), TryFloatFromString, std::numeric_limits<float>::infinity());
ParseAndCheck(TStringBuf("iNf"), TryDoubleFromString, std::numeric_limits<double>::infinity());
-
+
ParseAndCheck(TStringBuf("+inf"), TryFloatFromString, std::numeric_limits<float>::infinity());
ParseAndCheck(TStringBuf("+INF"), TryDoubleFromString, std::numeric_limits<double>::infinity());
-
+
ParseAndCheck(TStringBuf("-inf"), TryFloatFromString, -std::numeric_limits<float>::infinity());
ParseAndCheck(TStringBuf("-InF"), TryDoubleFromString, -std::numeric_limits<double>::infinity());
-
+
ParseAndCheck<float>(TStringBuf("-12.3456"), TryFloatFromString, -12.3456);
ParseAndCheck(TStringBuf("-12.3456"), TryDoubleFromString, -12.3456);
-
+
ParseAndCheck<float>(TStringBuf("1.23e-2"), TryFloatFromString, 0.0123);
ParseAndCheck(TStringBuf("1.23e-2"), TryDoubleFromString, 0.0123);
-
+
UNIT_ASSERT_EQUAL(FloatFromString(TStringBuf("iNf")), std::numeric_limits<float>::infinity());
UNIT_ASSERT_EQUAL(DoubleFromString(TStringBuf("iNf")), std::numeric_limits<float>::infinity());
- }
-
- Y_UNIT_TEST(Errors) {
+ }
+
+ Y_UNIT_TEST(Errors) {
UNIT_ASSERT_EXCEPTION_CONTAINS(FloatFromString(TStringBuf("")), std::exception, "unable to parse float from ''");
UNIT_ASSERT_EXCEPTION_CONTAINS(DoubleFromString(TStringBuf("")), std::exception, "unable to parse double from ''");
-
+
UNIT_ASSERT_EXCEPTION_CONTAINS(FloatFromString(TStringBuf("info")), std::exception, "unable to parse float from 'info'");
UNIT_ASSERT_EXCEPTION_CONTAINS(DoubleFromString(TStringBuf("-nana")), std::exception, "unable to parse double from '-nana'");
- }
-}
-}
+ }
+}
+}
diff --git a/ydb/library/yql/utils/rand_guid.cpp b/ydb/library/yql/utils/rand_guid.cpp
index 383d250c0d..982e65108b 100644
--- a/ydb/library/yql/utils/rand_guid.cpp
+++ b/ydb/library/yql/utils/rand_guid.cpp
@@ -1,32 +1,32 @@
-#include "rand_guid.h"
-
-#include <util/system/datetime.h>
-#include <util/system/getpid.h>
-#include <util/system/unaligned_mem.h>
-#include <util/generic/guid.h>
-
-namespace NYql {
-
-TAtomic TRandGuid::Counter = 0;
-
-TRandGuid::TRandGuid() {
- ResetSeed();
-}
-
-void TRandGuid::ResetSeed() {
- Rnd.Reset(new TMersenne<ui64>(GetCycleCount() + MicroSeconds() + GetPID()));
-}
-
-TString TRandGuid::GenGuid() {
- TGUID ret = {};
+#include "rand_guid.h"
+
+#include <util/system/datetime.h>
+#include <util/system/getpid.h>
+#include <util/system/unaligned_mem.h>
+#include <util/generic/guid.h>
+
+namespace NYql {
+
+TAtomic TRandGuid::Counter = 0;
+
+TRandGuid::TRandGuid() {
+ ResetSeed();
+}
+
+void TRandGuid::ResetSeed() {
+ Rnd.Reset(new TMersenne<ui64>(GetCycleCount() + MicroSeconds() + GetPID()));
+}
+
+TString TRandGuid::GenGuid() {
+ TGUID ret = {};
WriteUnaligned<ui64>(ret.dw, Rnd->GenRand());
- ret.dw[2] = (ui32)Rnd->GenRand();
- ret.dw[3] = AtomicIncrement(Counter);
-
- return GetGuidAsString(ret);
-}
-
-ui64 TRandGuid::GenNumber() {
- return Rnd->GenRand();
-}
-}
+ ret.dw[2] = (ui32)Rnd->GenRand();
+ ret.dw[3] = AtomicIncrement(Counter);
+
+ return GetGuidAsString(ret);
+}
+
+ui64 TRandGuid::GenNumber() {
+ return Rnd->GenRand();
+}
+}
diff --git a/ydb/library/yql/utils/rand_guid.h b/ydb/library/yql/utils/rand_guid.h
index 97d50cfa65..6594b05b29 100644
--- a/ydb/library/yql/utils/rand_guid.h
+++ b/ydb/library/yql/utils/rand_guid.h
@@ -1,22 +1,22 @@
-#pragma once
-
-#include <util/random/mersenne.h>
-#include <util/generic/ptr.h>
-
-namespace NYql {
-class TRandGuid {
-public:
- TRandGuid();
- TRandGuid(TRandGuid&&) = default;
- TRandGuid& operator=(TRandGuid&&) = default;
-
- void ResetSeed();
-
- TString GenGuid();
- ui64 GenNumber();
-
-private:
- THolder<TMersenne<ui64>> Rnd;
- static TAtomic Counter;
-};
-}
+#pragma once
+
+#include <util/random/mersenne.h>
+#include <util/generic/ptr.h>
+
+namespace NYql {
+class TRandGuid {
+public:
+ TRandGuid();
+ TRandGuid(TRandGuid&&) = default;
+ TRandGuid& operator=(TRandGuid&&) = default;
+
+ void ResetSeed();
+
+ TString GenGuid();
+ ui64 GenNumber();
+
+private:
+ THolder<TMersenne<ui64>> Rnd;
+ static TAtomic Counter;
+};
+}
diff --git a/ydb/library/yql/utils/range_walker.h b/ydb/library/yql/utils/range_walker.h
index 268fe36472..4ecb765556 100644
--- a/ydb/library/yql/utils/range_walker.h
+++ b/ydb/library/yql/utils/range_walker.h
@@ -1,47 +1,47 @@
-#pragma once
-
-#include <util/generic/yexception.h>
-
-namespace NYql {
-
-template <typename T>
-class TRangeWalker {
-private:
- const T Start_;
- const T Finish_;
- T Current_;
-
-public:
- TRangeWalker(T start, T finish)
- : Start_(start)
- , Finish_(finish)
- , Current_(start)
- {
- if (Start_ > Finish_) {
- ythrow yexception() << "Invalid range for walker";
- }
- }
-
- T GetStart() const {
- return Start_;
- }
-
- T GetFinish() const {
- return Finish_;
- }
-
- T GetRangeSize() const {
- return Finish_ - Start_ + 1;
- }
-
- T MoveToNext() {
- T result = Current_++;
-
- if (Current_ > Finish_) {
- Current_ = Start_;
- }
-
- return result;
- }
-};
-}
+#pragma once
+
+#include <util/generic/yexception.h>
+
+namespace NYql {
+
+template <typename T>
+class TRangeWalker {
+private:
+ const T Start_;
+ const T Finish_;
+ T Current_;
+
+public:
+ TRangeWalker(T start, T finish)
+ : Start_(start)
+ , Finish_(finish)
+ , Current_(start)
+ {
+ if (Start_ > Finish_) {
+ ythrow yexception() << "Invalid range for walker";
+ }
+ }
+
+ T GetStart() const {
+ return Start_;
+ }
+
+ T GetFinish() const {
+ return Finish_;
+ }
+
+ T GetRangeSize() const {
+ return Finish_ - Start_ + 1;
+ }
+
+ T MoveToNext() {
+ T result = Current_++;
+
+ if (Current_ > Finish_) {
+ Current_ = Start_;
+ }
+
+ return result;
+ }
+};
+}
diff --git a/ydb/library/yql/utils/range_walker_ut.cpp b/ydb/library/yql/utils/range_walker_ut.cpp
index d6a86cc804..215998571d 100644
--- a/ydb/library/yql/utils/range_walker_ut.cpp
+++ b/ydb/library/yql/utils/range_walker_ut.cpp
@@ -1,35 +1,35 @@
-#include "range_walker.h"
-
+#include "range_walker.h"
+
#include <library/cpp/testing/unittest/registar.h>
-
-using namespace NYql;
-
+
+using namespace NYql;
+
Y_UNIT_TEST_SUITE(TRangeWalkerTests) {
Y_UNIT_TEST(InvalidRange) {
- UNIT_ASSERT_EXCEPTION_CONTAINS(TRangeWalker<int>(2, 1), yexception, "Invalid range for walker");
- }
-
+ UNIT_ASSERT_EXCEPTION_CONTAINS(TRangeWalker<int>(2, 1), yexception, "Invalid range for walker");
+ }
+
Y_UNIT_TEST(SingleValueRange) {
- TRangeWalker<int> w(5, 5);
- UNIT_ASSERT_EQUAL(5, w.GetStart());
- UNIT_ASSERT_EQUAL(5, w.GetFinish());
- UNIT_ASSERT_EQUAL(1, w.GetRangeSize());
-
- for (int i = 0; i < 10; ++i) {
- UNIT_ASSERT_EQUAL(5, w.MoveToNext());
- }
- }
-
+ TRangeWalker<int> w(5, 5);
+ UNIT_ASSERT_EQUAL(5, w.GetStart());
+ UNIT_ASSERT_EQUAL(5, w.GetFinish());
+ UNIT_ASSERT_EQUAL(1, w.GetRangeSize());
+
+ for (int i = 0; i < 10; ++i) {
+ UNIT_ASSERT_EQUAL(5, w.MoveToNext());
+ }
+ }
+
Y_UNIT_TEST(ManyValuesRange) {
- TRangeWalker<int> w(5, 7);
- UNIT_ASSERT_EQUAL(5, w.GetStart());
- UNIT_ASSERT_EQUAL(7, w.GetFinish());
- UNIT_ASSERT_EQUAL(3, w.GetRangeSize());
-
- for (int i = 0; i < 10; ++i) {
- UNIT_ASSERT_EQUAL(5, w.MoveToNext());
- UNIT_ASSERT_EQUAL(6, w.MoveToNext());
- UNIT_ASSERT_EQUAL(7, w.MoveToNext());
- }
- }
-}
+ TRangeWalker<int> w(5, 7);
+ UNIT_ASSERT_EQUAL(5, w.GetStart());
+ UNIT_ASSERT_EQUAL(7, w.GetFinish());
+ UNIT_ASSERT_EQUAL(3, w.GetRangeSize());
+
+ for (int i = 0; i < 10; ++i) {
+ UNIT_ASSERT_EQUAL(5, w.MoveToNext());
+ UNIT_ASSERT_EQUAL(6, w.MoveToNext());
+ UNIT_ASSERT_EQUAL(7, w.MoveToNext());
+ }
+ }
+}
diff --git a/ydb/library/yql/utils/retry.cpp b/ydb/library/yql/utils/retry.cpp
index ac40d79b12..6720eeb13a 100644
--- a/ydb/library/yql/utils/retry.cpp
+++ b/ydb/library/yql/utils/retry.cpp
@@ -1 +1 @@
-#include "retry.h"
+#include "retry.h"
diff --git a/ydb/library/yql/utils/retry.h b/ydb/library/yql/utils/retry.h
index 7735aa1a8c..afd0859e4c 100644
--- a/ydb/library/yql/utils/retry.h
+++ b/ydb/library/yql/utils/retry.h
@@ -1,17 +1,17 @@
-#pragma once
-
-namespace NYql {
-
-template <typename TRetriableException, typename TAction, typename TExceptionHander>
-auto WithRetry(int attempts, TAction&& a, TExceptionHander&& exceptionHandler) {
- for (int i = 1; i < attempts; ++i) {
- try {
- return a();
- } catch (const TRetriableException& e) {
- exceptionHandler(e, i, attempts);
- }
- }
-
- return a();
-}
-}
+#pragma once
+
+namespace NYql {
+
+template <typename TRetriableException, typename TAction, typename TExceptionHander>
+auto WithRetry(int attempts, TAction&& a, TExceptionHander&& exceptionHandler) {
+ for (int i = 1; i < attempts; ++i) {
+ try {
+ return a();
+ } catch (const TRetriableException& e) {
+ exceptionHandler(e, i, attempts);
+ }
+ }
+
+ return a();
+}
+}
diff --git a/ydb/library/yql/utils/retry_ut.cpp b/ydb/library/yql/utils/retry_ut.cpp
index 47cb35fd73..5c9a64a02d 100644
--- a/ydb/library/yql/utils/retry_ut.cpp
+++ b/ydb/library/yql/utils/retry_ut.cpp
@@ -1,73 +1,73 @@
-#include "retry.h"
-
+#include "retry.h"
+
#include <library/cpp/testing/unittest/registar.h>
-
-using namespace NYql;
-
-namespace {
-
-class TMyError : public yexception {
-};
-
-}
-
+
+using namespace NYql;
+
+namespace {
+
+class TMyError : public yexception {
+};
+
+}
+
Y_UNIT_TEST_SUITE(TRetryTests) {
Y_UNIT_TEST(ZeroAttempts) {
- auto r = WithRetry<TMyError>(0,
- []() { return TString("abc"); },
- [](auto, auto, auto) { UNIT_FAIL("Exception handler invoked"); });
-
- UNIT_ASSERT_VALUES_EQUAL("abc", r);
- }
-
+ auto r = WithRetry<TMyError>(0,
+ []() { return TString("abc"); },
+ [](auto, auto, auto) { UNIT_FAIL("Exception handler invoked"); });
+
+ UNIT_ASSERT_VALUES_EQUAL("abc", r);
+ }
+
Y_UNIT_TEST(NoRetries) {
- auto r = WithRetry<TMyError>(5,
- []() { return TString("abc"); },
- [](auto, auto, auto) { UNIT_FAIL("Exception handler invoked"); });
-
- UNIT_ASSERT_VALUES_EQUAL("abc", r);
- }
-
+ auto r = WithRetry<TMyError>(5,
+ []() { return TString("abc"); },
+ [](auto, auto, auto) { UNIT_FAIL("Exception handler invoked"); });
+
+ UNIT_ASSERT_VALUES_EQUAL("abc", r);
+ }
+
Y_UNIT_TEST(NoRetriesButException) {
- UNIT_ASSERT_EXCEPTION_CONTAINS(WithRetry<TMyError>(5,
- []() { throw yexception() << "xxxx"; },
- [](auto, auto, auto) { UNIT_FAIL("Exception handler invoked"); }), yexception, "xxxx");
- }
-
+ UNIT_ASSERT_EXCEPTION_CONTAINS(WithRetry<TMyError>(5,
+ []() { throw yexception() << "xxxx"; },
+ [](auto, auto, auto) { UNIT_FAIL("Exception handler invoked"); }), yexception, "xxxx");
+ }
+
Y_UNIT_TEST(FewRetries) {
- int counter = 0;
- int exceptions = 0;
- auto r = WithRetry<TMyError>(3, [&]() {
- if (counter++ < 2) {
- throw TMyError() << "yyyy";
- }
-
- return counter;
- }, [&](const auto& e, int attempt, int attemptCount) {
- ++exceptions;
- UNIT_ASSERT_VALUES_EQUAL(e.what(), "yyyy");
- UNIT_ASSERT_VALUES_EQUAL(attempt, counter);
- UNIT_ASSERT_VALUES_EQUAL(attemptCount, 3);
- });
-
- UNIT_ASSERT_VALUES_EQUAL(2, exceptions);
- UNIT_ASSERT_VALUES_EQUAL(3, r);
- UNIT_ASSERT_VALUES_EQUAL(3, counter);
- }
-
+ int counter = 0;
+ int exceptions = 0;
+ auto r = WithRetry<TMyError>(3, [&]() {
+ if (counter++ < 2) {
+ throw TMyError() << "yyyy";
+ }
+
+ return counter;
+ }, [&](const auto& e, int attempt, int attemptCount) {
+ ++exceptions;
+ UNIT_ASSERT_VALUES_EQUAL(e.what(), "yyyy");
+ UNIT_ASSERT_VALUES_EQUAL(attempt, counter);
+ UNIT_ASSERT_VALUES_EQUAL(attemptCount, 3);
+ });
+
+ UNIT_ASSERT_VALUES_EQUAL(2, exceptions);
+ UNIT_ASSERT_VALUES_EQUAL(3, r);
+ UNIT_ASSERT_VALUES_EQUAL(3, counter);
+ }
+
Y_UNIT_TEST(ManyRetries) {
- int counter = 0;
- int exceptions = 0;
- UNIT_ASSERT_EXCEPTION_CONTAINS(WithRetry<TMyError>(3, [&]() {
- throw TMyError() << "yyyy" << counter++;
- }, [&](const auto& e, int attempt, int attemptCount) {
- ++exceptions;
- UNIT_ASSERT_STRING_CONTAINS(e.what(), "yyyy");
- UNIT_ASSERT_VALUES_EQUAL(attempt, counter);
- UNIT_ASSERT_VALUES_EQUAL(attemptCount, 3);
- }), TMyError, "yyyy2");
-
- UNIT_ASSERT_VALUES_EQUAL(2, exceptions);
- UNIT_ASSERT_VALUES_EQUAL(3, counter);
- }
-}
+ int counter = 0;
+ int exceptions = 0;
+ UNIT_ASSERT_EXCEPTION_CONTAINS(WithRetry<TMyError>(3, [&]() {
+ throw TMyError() << "yyyy" << counter++;
+ }, [&](const auto& e, int attempt, int attemptCount) {
+ ++exceptions;
+ UNIT_ASSERT_STRING_CONTAINS(e.what(), "yyyy");
+ UNIT_ASSERT_VALUES_EQUAL(attempt, counter);
+ UNIT_ASSERT_VALUES_EQUAL(attemptCount, 3);
+ }), TMyError, "yyyy2");
+
+ UNIT_ASSERT_VALUES_EQUAL(2, exceptions);
+ UNIT_ASSERT_VALUES_EQUAL(3, counter);
+ }
+}
diff --git a/ydb/library/yql/utils/ut/ya.make b/ydb/library/yql/utils/ut/ya.make
index 0d26eb2c5f..9841fc454f 100644
--- a/ydb/library/yql/utils/ut/ya.make
+++ b/ydb/library/yql/utils/ut/ya.make
@@ -1,15 +1,15 @@
UNITTEST_FOR(ydb/library/yql/utils)
-
-OWNER(g:yql)
-
-SRCS(
+
+OWNER(g:yql)
+
+SRCS(
fp_bits_ut.cpp
- md5_stream_ut.cpp
- multi_resource_lock_ut.cpp
- parse_double_ut.cpp
- range_walker_ut.cpp
- retry_ut.cpp
+ md5_stream_ut.cpp
+ multi_resource_lock_ut.cpp
+ parse_double_ut.cpp
+ range_walker_ut.cpp
+ retry_ut.cpp
utf8_ut.cpp
-)
-
-END()
+)
+
+END()
diff --git a/ydb/library/yql/utils/ya.make b/ydb/library/yql/utils/ya.make
index afba70be53..b9b5efab23 100644
--- a/ydb/library/yql/utils/ya.make
+++ b/ydb/library/yql/utils/ya.make
@@ -11,38 +11,38 @@ SRCS(
cast.h
debug_info.cpp
debug_info.h
- future_action.cpp
- future_action.h
+ future_action.cpp
+ future_action.h
hash.h
hash.cpp
- md5_stream.cpp
- md5_stream.h
- multi_resource_lock.cpp
- multi_resource_lock.h
- parse_double.cpp
- parse_double.h
+ md5_stream.cpp
+ md5_stream.h
+ multi_resource_lock.cpp
+ multi_resource_lock.h
+ parse_double.cpp
+ parse_double.h
proc_alive.cpp
proc_alive.h
- rand_guid.cpp
- rand_guid.h
+ rand_guid.cpp
+ rand_guid.h
resetable_setting.h
- retry.cpp
- retry.h
+ retry.cpp
+ retry.h
swap_bytes.cpp
swap_bytes.h
- yql_panic.cpp
- yql_panic.h
+ yql_panic.cpp
+ yql_panic.h
yql_paths.cpp
yql_paths.h
utf8.cpp
)
-PEERDIR(
+PEERDIR(
library/cpp/digest/md5
library/cpp/threading/future
library/cpp/messagebus
-)
-
+)
+
END()
RECURSE(
diff --git a/ydb/public/api/protos/yq.proto b/ydb/public/api/protos/yq.proto
index 6aa7169a89..874a8afd67 100644
--- a/ydb/public/api/protos/yq.proto
+++ b/ydb/public/api/protos/yq.proto
@@ -607,7 +607,7 @@ message DataStreamsBinding {
string format = 2 [(Ydb.length).le = 1024];
string compression = 3 [(Ydb.length).le = 1024];
Schema schema = 4;
- map<string, string> format_setting = 5 [(Ydb.size).le = 100];
+ map<string, string> format_setting = 5 [(Ydb.size).le = 100];
}
message ObjectStorageBinding {
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_profile.cpp b/ydb/public/lib/ydb_cli/commands/ydb_profile.cpp
index f9f2a16e85..d431d87cf2 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_profile.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_profile.cpp
@@ -25,17 +25,17 @@ std::shared_ptr<IProfileManager> CreateYdbProfileManager(const TString& ydbDir)
TCommandConfig::TCommandConfig()
: TClientCommandTree("config", {}, "Manage YDB CLI configuration")
{
- AddCommand(std::make_unique<TCommandProfile>());
+ AddCommand(std::make_unique<TCommandProfile>());
}
TCommandProfile::TCommandProfile()
: TClientCommandTree("profile", {}, "Manage configuration profiles")
{
- AddCommand(std::make_unique<TCommandCreateProfile>());
- AddCommand(std::make_unique<TCommandDeleteProfile>());
- AddCommand(std::make_unique<TCommandActivateProfile>());
- AddCommand(std::make_unique<TCommandListProfiles>());
- AddCommand(std::make_unique<TCommandGetProfile>());
+ AddCommand(std::make_unique<TCommandCreateProfile>());
+ AddCommand(std::make_unique<TCommandDeleteProfile>());
+ AddCommand(std::make_unique<TCommandActivateProfile>());
+ AddCommand(std::make_unique<TCommandListProfiles>());
+ AddCommand(std::make_unique<TCommandGetProfile>());
}
namespace {
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_root_common.cpp b/ydb/public/lib/ydb_cli/commands/ydb_root_common.cpp
index 2cccf42a41..d1f58668c9 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_root_common.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_root_common.cpp
@@ -26,17 +26,17 @@ TClientCommandRootCommon::TClientCommandRootCommon(const TClientSettings& settin
, Settings (settings)
{
ValidateSettings();
- AddCommand(std::make_unique<TCommandDiscovery>());
- AddCommand(std::make_unique<TCommandScheme>());
- AddCommand(std::make_unique<TCommandScripting>());
- AddCommand(std::make_unique<TCommandTable>());
- AddCommand(std::make_unique<TCommandTools>());
- AddCommand(std::make_unique<TCommandExport>(Settings.UseExportToYt.GetRef()));
- AddCommand(std::make_unique<TCommandImport>());
- AddCommand(std::make_unique<TCommandOperation>());
- AddCommand(std::make_unique<TCommandConfig>());
- AddCommand(std::make_unique<TCommandInit>());
- AddCommand(std::make_unique<TCommandYql>());
+ AddCommand(std::make_unique<TCommandDiscovery>());
+ AddCommand(std::make_unique<TCommandScheme>());
+ AddCommand(std::make_unique<TCommandScripting>());
+ AddCommand(std::make_unique<TCommandTable>());
+ AddCommand(std::make_unique<TCommandTools>());
+ AddCommand(std::make_unique<TCommandExport>(Settings.UseExportToYt.GetRef()));
+ AddCommand(std::make_unique<TCommandImport>());
+ AddCommand(std::make_unique<TCommandOperation>());
+ AddCommand(std::make_unique<TCommandConfig>());
+ AddCommand(std::make_unique<TCommandInit>());
+ AddCommand(std::make_unique<TCommandYql>());
AddCommand(std::make_unique<TCommandStream>());
AddCommand(std::make_unique<TCommandWorkload>());
}
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_discovery.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_discovery.cpp
index 18aa3a65e5..800d5f963b 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_service_discovery.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_service_discovery.cpp
@@ -6,8 +6,8 @@ namespace NConsoleClient {
TCommandDiscovery::TCommandDiscovery()
: TClientCommandTree("discovery", {}, "Discovery service operations")
{
- AddCommand(std::make_unique<TCommandListEndpoints>());
- AddCommand(std::make_unique<TCommandWhoAmI>());
+ AddCommand(std::make_unique<TCommandListEndpoints>());
+ AddCommand(std::make_unique<TCommandWhoAmI>());
}
TCommandListEndpoints::TCommandListEndpoints()
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_export.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_export.cpp
index f997343dc8..0c4430d5dc 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_service_export.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_service_export.cpp
@@ -72,9 +72,9 @@ TCommandExport::TCommandExport(bool useExportToYt)
: TClientCommandTree("export", {}, "Export service operations")
{
if (useExportToYt) {
- AddCommand(std::make_unique<TCommandExportToYt>());
+ AddCommand(std::make_unique<TCommandExportToYt>());
}
- AddCommand(std::make_unique<TCommandExportToS3>());
+ AddCommand(std::make_unique<TCommandExportToS3>());
}
/// YT
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_import.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_import.cpp
index b28e881428..4025a3d872 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_service_import.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_service_import.cpp
@@ -15,8 +15,8 @@ namespace NConsoleClient {
TCommandImport::TCommandImport()
: TClientCommandTree("import", {}, "Import service operations")
{
- AddCommand(std::make_unique<TCommandImportFromS3>());
- AddCommand(std::make_unique<TCommandImportFromFile>());
+ AddCommand(std::make_unique<TCommandImportFromS3>());
+ AddCommand(std::make_unique<TCommandImportFromFile>());
}
/// S3
@@ -128,8 +128,8 @@ int TCommandImportFromS3::Run(TConfig& config) {
TCommandImportFromFile::TCommandImportFromFile()
: TClientCommandTree("file", {}, "Import data from file")
{
- AddCommand(std::make_unique<TCommandImportFromCsv>());
- AddCommand(std::make_unique<TCommandImportFromTsv>());
+ AddCommand(std::make_unique<TCommandImportFromCsv>());
+ AddCommand(std::make_unique<TCommandImportFromTsv>());
}
/// CSV
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_operation.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_operation.cpp
index 45b694cf94..0ee76deff2 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_service_operation.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_service_operation.cpp
@@ -42,10 +42,10 @@ namespace {
TCommandOperation::TCommandOperation()
: TClientCommandTree("operation", {}, "Operation service operations")
{
- AddCommand(std::make_unique<TCommandGetOperation>());
- AddCommand(std::make_unique<TCommandCancelOperation>());
- AddCommand(std::make_unique<TCommandForgetOperation>());
- AddCommand(std::make_unique<TCommandListOperations>());
+ AddCommand(std::make_unique<TCommandGetOperation>());
+ AddCommand(std::make_unique<TCommandCancelOperation>());
+ AddCommand(std::make_unique<TCommandForgetOperation>());
+ AddCommand(std::make_unique<TCommandListOperations>());
}
void TCommandWithOperationId::Config(TConfig& config) {
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp
index a6f81fe432..e62f61e2e4 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scheme.cpp
@@ -13,11 +13,11 @@ namespace NConsoleClient {
TCommandScheme::TCommandScheme()
: TClientCommandTree("scheme", {}, "Scheme service operations")
{
- AddCommand(std::make_unique<TCommandMakeDirectory>());
- AddCommand(std::make_unique<TCommandRemoveDirectory>());
- AddCommand(std::make_unique<TCommandDescribe>());
- AddCommand(std::make_unique<TCommandList>());
- AddCommand(std::make_unique<TCommandPermissions>());
+ AddCommand(std::make_unique<TCommandMakeDirectory>());
+ AddCommand(std::make_unique<TCommandRemoveDirectory>());
+ AddCommand(std::make_unique<TCommandDescribe>());
+ AddCommand(std::make_unique<TCommandList>());
+ AddCommand(std::make_unique<TCommandPermissions>());
}
TCommandMakeDirectory::TCommandMakeDirectory()
@@ -892,11 +892,11 @@ void TCommandList::AddEntriesRecursive(
TCommandPermissions::TCommandPermissions()
: TClientCommandTree("permissions", {}, "Modify permissions")
{
- AddCommand(std::make_unique<TCommandPermissionGrant>());
- AddCommand(std::make_unique<TCommandPermissionRevoke>());
- AddCommand(std::make_unique<TCommandPermissionSet>());
- AddCommand(std::make_unique<TCommandChangeOwner>());
- AddCommand(std::make_unique<TCommandPermissionClear>());
+ AddCommand(std::make_unique<TCommandPermissionGrant>());
+ AddCommand(std::make_unique<TCommandPermissionRevoke>());
+ AddCommand(std::make_unique<TCommandPermissionSet>());
+ AddCommand(std::make_unique<TCommandChangeOwner>());
+ AddCommand(std::make_unique<TCommandPermissionClear>());
}
TCommandPermissionGrant::TCommandPermissionGrant()
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 4a25c372ce..c3f726a538 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_service_scripting.cpp
@@ -12,7 +12,7 @@ namespace NConsoleClient {
TCommandScripting::TCommandScripting()
: TClientCommandTree("scripting", {}, "Scripting service operations")
{
- AddCommand(std::make_unique<TCommandExecuteYqlScript>());
+ AddCommand(std::make_unique<TCommandExecuteYqlScript>());
}
TCommandExecuteYqlScript::TCommandExecuteYqlScript()
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_service_stream.cpp b/ydb/public/lib/ydb_cli/commands/ydb_service_stream.cpp
index 24b478f881..51754b4aee 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_service_stream.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_service_stream.cpp
@@ -68,10 +68,10 @@ namespace NYdb::NConsoleClient {
TCommandStream::TCommandStream()
: TClientCommandTree("stream", {}, "DataStreams service operations") {
- AddCommand(std::make_unique<TCommandStreamCreate>());
- AddCommand(std::make_unique<TCommandStreamAlter>());
- AddCommand(std::make_unique<TCommandStreamDrop>());
- AddCommand(std::make_unique<TCommandStreamConsumer>());
+ AddCommand(std::make_unique<TCommandStreamCreate>());
+ AddCommand(std::make_unique<TCommandStreamAlter>());
+ AddCommand(std::make_unique<TCommandStreamDrop>());
+ AddCommand(std::make_unique<TCommandStreamConsumer>());
}
TCommandStreamCreate::TCommandStreamCreate()
@@ -198,8 +198,8 @@ namespace NYdb::NConsoleClient {
}
TCommandStreamConsumer::TCommandStreamConsumer() : TClientCommandTree("consumer", {}, "Consumer operations") {
- AddCommand(std::make_unique<TCommandStreamConsumerAdd>());
- AddCommand(std::make_unique<TCommandStreamConsumerDrop>());
+ AddCommand(std::make_unique<TCommandStreamConsumerAdd>());
+ AddCommand(std::make_unique<TCommandStreamConsumerDrop>());
}
TCommandStreamConsumerAdd::TCommandStreamConsumerAdd() : TYdbCommand("add", {}, "Consumer add operation") {}
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 2f94b2fc03..e000e55a72 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_service_table.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_service_table.cpp
@@ -21,48 +21,48 @@ namespace NConsoleClient {
TCommandTable::TCommandTable()
: TClientCommandTree("table", {}, "Table service operations")
{
- //AddCommand(std::make_unique<TCommandCreateTable>());
- AddCommand(std::make_unique<TCommandDropTable>());
- AddCommand(std::make_unique<TCommandQuery>());
- AddCommand(std::make_unique<TCommandReadTable>());
- AddCommand(std::make_unique<TCommandIndex>());
- AddCommand(std::make_unique<TCommandAttribute>());
- AddCommand(std::make_unique<TCommandTtl>());
+ //AddCommand(std::make_unique<TCommandCreateTable>());
+ AddCommand(std::make_unique<TCommandDropTable>());
+ AddCommand(std::make_unique<TCommandQuery>());
+ AddCommand(std::make_unique<TCommandReadTable>());
+ AddCommand(std::make_unique<TCommandIndex>());
+ AddCommand(std::make_unique<TCommandAttribute>());
+ AddCommand(std::make_unique<TCommandTtl>());
}
TCommandQuery::TCommandQuery()
: TClientCommandTree("query", {}, "Query operations")
{
- AddCommand(std::make_unique<TCommandExecuteQuery>());
- AddCommand(std::make_unique<TCommandExplain>());
+ AddCommand(std::make_unique<TCommandExecuteQuery>());
+ AddCommand(std::make_unique<TCommandExplain>());
}
TCommandIndex::TCommandIndex()
: TClientCommandTree("index", {}, "Index operations")
{
- AddCommand(std::make_unique<TCommandIndexAdd>());
- AddCommand(std::make_unique<TCommandIndexDrop>());
+ AddCommand(std::make_unique<TCommandIndexAdd>());
+ AddCommand(std::make_unique<TCommandIndexDrop>());
}
TCommandAttribute::TCommandAttribute()
: TClientCommandTree("attribute", {"attr"}, "Attribute operations")
{
- AddCommand(std::make_unique<TCommandAttributeAdd>());
- AddCommand(std::make_unique<TCommandAttributeDrop>());
+ AddCommand(std::make_unique<TCommandAttributeAdd>());
+ AddCommand(std::make_unique<TCommandAttributeDrop>());
}
TCommandTtl::TCommandTtl()
: TClientCommandTree("ttl", {}, "Ttl operations")
{
- AddCommand(std::make_unique<TCommandTtlSet>());
- AddCommand(std::make_unique<TCommandTtlDrop>());
+ AddCommand(std::make_unique<TCommandTtlSet>());
+ AddCommand(std::make_unique<TCommandTtlDrop>());
}
TCommandIndexAdd::TCommandIndexAdd()
: TClientCommandTree("add", {}, "Add index in to the specified table")
{
- AddCommand(std::make_unique<TCommandIndexAddGlobalSync>());
- AddCommand(std::make_unique<TCommandIndexAddGlobalAsync>());
+ AddCommand(std::make_unique<TCommandIndexAddGlobalSync>());
+ AddCommand(std::make_unique<TCommandIndexAddGlobalAsync>());
}
TTableCommand::TTableCommand(const TString& name, const std::initializer_list<TString>& aliases, const TString& description)
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_tools.cpp b/ydb/public/lib/ydb_cli/commands/ydb_tools.cpp
index db4ec14d30..496e67ec16 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_tools.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_tools.cpp
@@ -13,10 +13,10 @@ namespace NYdb::NConsoleClient {
TCommandTools::TCommandTools()
: TClientCommandTree("tools", {}, "YDB tools service")
{
- AddCommand(std::make_unique<TCommandDump>());
- AddCommand(std::make_unique<TCommandRestore>());
- AddCommand(std::make_unique<TCommandCopy>());
- AddCommand(std::make_unique<TCommandRename>());
+ AddCommand(std::make_unique<TCommandDump>());
+ AddCommand(std::make_unique<TCommandRestore>());
+ AddCommand(std::make_unique<TCommandCopy>());
+ AddCommand(std::make_unique<TCommandRename>());
}
TToolsCommand::TToolsCommand(const TString& name, const std::initializer_list<TString>& aliases, const TString& description)
diff --git a/ydb/public/lib/ydb_cli/common/command.cpp b/ydb/public/lib/ydb_cli/common/command.cpp
index ce7334d738..ef11117b09 100644
--- a/ydb/public/lib/ydb_cli/common/command.cpp
+++ b/ydb/public/lib/ydb_cli/common/command.cpp
@@ -253,12 +253,12 @@ TClientCommandTree::TClientCommandTree(const TString& name, const std::initializ
Args[0] = "<subcommand>";
}
-void TClientCommandTree::AddCommand(std::unique_ptr<TClientCommand> command) {
+void TClientCommandTree::AddCommand(std::unique_ptr<TClientCommand> command) {
for (const TString& a : command->Aliases) {
Aliases[a] = command->Name;
}
command->Parent = this;
- SubCommands[command->Name] = std::move(command);
+ SubCommands[command->Name] = std::move(command);
}
void TClientCommandTree::Config(TConfig& config) {
@@ -302,7 +302,7 @@ void TClientCommandTree::Parse(TConfig& config) {
it = SubCommands.find("*");
}
if (it != SubCommands.end()) {
- SelectedCommand = it->second.get();
+ SelectedCommand = it->second.get();
} else {
throw yexception() << "Invalid command '" << cmd << "'";
}
diff --git a/ydb/public/lib/ydb_cli/common/command.h b/ydb/public/lib/ydb_cli/common/command.h
index 441206cdf7..ef2eb77be9 100644
--- a/ydb/public/lib/ydb_cli/common/command.h
+++ b/ydb/public/lib/ydb_cli/common/command.h
@@ -325,12 +325,12 @@ private:
class TClientCommandTree : public TClientCommand {
public:
- TMap<TString, std::unique_ptr<TClientCommand>> SubCommands;
+ TMap<TString, std::unique_ptr<TClientCommand>> SubCommands;
TMap<TString, TString> Aliases;
TClientCommand* SelectedCommand;
TClientCommandTree(const TString& name, const std::initializer_list<TString>& aliases = std::initializer_list<TString>(), const TString& description = TString());
- void AddCommand(std::unique_ptr<TClientCommand> command);
+ void AddCommand(std::unique_ptr<TClientCommand> command);
virtual void Config(TConfig& config) override;
virtual void Parse(TConfig& config) override;
virtual int Run(TConfig& config) override;
diff --git a/ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/actions.h b/ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/actions.h
index ebd16c5a83..032f4514bc 100644
--- a/ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/actions.h
+++ b/ydb/public/sdk/cpp/client/impl/ydb_internal/grpc_connections/actions.h
@@ -99,7 +99,7 @@ private:
}
protected:
- gpr_timespec Deadline_ = {};
+ gpr_timespec Deadline_ = {};
private:
std::mutex Mutex_;
diff --git a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/common.h b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/common.h
index 7287b69894..a3715dc51e 100644
--- a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/common.h
+++ b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/common.h
@@ -282,7 +282,7 @@ protected:
// Template for visitor implementation.
struct TBaseHandlersVisitor {
- TBaseHandlersVisitor(const TSettings& settings, TEventInfo& eventInfo)
+ TBaseHandlersVisitor(const TSettings& settings, TEventInfo& eventInfo)
: Settings(settings)
, EventInfo(eventInfo)
{}
diff --git a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp
index e7dd0a87e5..c06f7ea5da 100644
--- a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp
+++ b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/read_session.cpp
@@ -1788,8 +1788,8 @@ void TReadSessionEventsQueue::SignalEventImpl(TIntrusivePtr<TPartitionStreamImpl
if (Closed) {
return;
}
- auto session = partitionStream->GetSession();
- Events.emplace(std::move(partitionStream), std::move(session));
+ auto session = partitionStream->GetSession();
+ Events.emplace(std::move(partitionStream), std::move(session));
SignalWaiterImpl(deferred);
}
@@ -1855,7 +1855,7 @@ bool TReadSessionEventsQueue::ApplyCallbacksToReadyEventsImpl(TDeferredActions&
}
const TIntrusivePtr<TPartitionStreamImpl> partitionStreamForSignalling = eventInfo->IsDataEvent() ? eventInfo->PartitionStream : nullptr;
applied = true;
- if (!ApplyHandler(*eventInfo, deferred)) { // Close session event.
+ if (!ApplyHandler(*eventInfo, deferred)) { // Close session event.
break;
}
if (partitionStreamForSignalling) {
diff --git a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.cpp b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.cpp
index af4e08b979..6d5e21e033 100644
--- a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.cpp
+++ b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.cpp
@@ -754,7 +754,7 @@ bool TWriteSession::CleanupOnAcknowledged(ui64 sequenceNumber) {
auto memoryUsage = OnMemoryUsageChangedImpl(-SentPackedMessage.front().Data.size());
result = memoryUsage.NowOk && !memoryUsage.WasOk;
//EventsQueue->PushEvent(TWriteSessionEvent::TReadyToAcceptEvent{TContinuationToken{}});
- const auto& front = SentPackedMessage.front();
+ const auto& front = SentPackedMessage.front();
if (front.Compressed) {
compressedSize = front.Data.size();
} else {
@@ -763,7 +763,7 @@ bool TWriteSession::CleanupOnAcknowledged(ui64 sequenceNumber) {
(*Counters->MessagesWritten) += front.MessageCount;
(*Counters->MessagesInflight) -= front.MessageCount;
- (*Counters->BytesWritten) += front.OriginalSize;
+ (*Counters->BytesWritten) += front.OriginalSize;
SentPackedMessage.pop();
} else {
diff --git a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.h b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.h
index 324550bb02..0391b5aae0 100644
--- a/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.h
+++ b/ydb/public/sdk/cpp/client/ydb_persqueue_core/impl/write_session.h
@@ -29,7 +29,7 @@ public:
{}
void PushEvent(TEventInfo eventInfo) {
- if (Closed || ApplyHandler(eventInfo)) {
+ if (Closed || ApplyHandler(eventInfo)) {
return;
}
@@ -92,8 +92,8 @@ public:
waiter = TWaiter(Waiter.ExtractPromise(), this);
}
- TEventInfo info(event);
- ApplyHandler(info);
+ TEventInfo info(event);
+ ApplyHandler(info);
waiter.Signal();
}
@@ -121,8 +121,8 @@ private:
};
- bool ApplyHandler(TEventInfo& eventInfo) {
- THandlersVisitor visitor(Settings, eventInfo);
+ bool ApplyHandler(TEventInfo& eventInfo) {
+ THandlersVisitor visitor(Settings, eventInfo);
return visitor.Visit();
}
diff --git a/ydb/services/yq/ut_integration/ya.make b/ydb/services/yq/ut_integration/ya.make
index bc62df4563..0b8453a366 100644
--- a/ydb/services/yq/ut_integration/ya.make
+++ b/ydb/services/yq/ut_integration/ya.make
@@ -21,7 +21,7 @@ PEERDIR(
library/cpp/regex/pcre
library/cpp/svnversion
ydb/core/testlib
- ydb/core/yq/libs/control_plane_storage
+ ydb/core/yq/libs/control_plane_storage
ydb/core/yq/libs/db_resolver
ydb/core/yq/libs/db_schema
ydb/core/yq/libs/private_client
diff --git a/ydb/services/yq/ut_integration/yq_ut.cpp b/ydb/services/yq/ut_integration/yq_ut.cpp
index d4a35f195e..ba9171b0c7 100644
--- a/ydb/services/yq/ut_integration/yq_ut.cpp
+++ b/ydb/services/yq/ut_integration/yq_ut.cpp
@@ -7,7 +7,7 @@
#include <ydb/core/yq/libs/private_client/utils.h>
#include <ydb/core/yq/libs/private_client/private_client.h>
-#include <ydb/core/yq/libs/control_plane_storage/message_builders.h>
+#include <ydb/core/yq/libs/control_plane_storage/message_builders.h>
#include <ydb/core/yq/libs/actors/database_resolver.h>
#include <ydb/library/yql/public/issue/yql_issue_message.h>