mongo 2.22.0 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/mongo_console +0 -1
- data/lib/mongo/active_support.rb +1 -2
- data/lib/mongo/address/ipv4.rb +3 -6
- data/lib/mongo/address/ipv6.rb +6 -10
- data/lib/mongo/address/unix.rb +1 -4
- data/lib/mongo/address/validator.rb +16 -28
- data/lib/mongo/address.rb +30 -40
- data/lib/mongo/auth/aws/conversation.rb +6 -10
- data/lib/mongo/auth/aws/credentials.rb +0 -1
- data/lib/mongo/auth/aws/credentials_cache.rb +0 -1
- data/lib/mongo/auth/aws/credentials_retriever.rb +45 -59
- data/lib/mongo/auth/aws/request.rb +20 -35
- data/lib/mongo/auth/aws.rb +1 -2
- data/lib/mongo/auth/base.rb +20 -29
- data/lib/mongo/auth/conversation_base.rb +14 -18
- data/lib/mongo/auth/cr/conversation.rb +0 -3
- data/lib/mongo/auth/cr.rb +1 -4
- data/lib/mongo/auth/credential_cache.rb +0 -2
- data/lib/mongo/auth/gssapi/conversation.rb +3 -8
- data/lib/mongo/auth/gssapi.rb +1 -4
- data/lib/mongo/auth/ldap/conversation.rb +0 -3
- data/lib/mongo/auth/ldap.rb +1 -4
- data/lib/mongo/auth/roles.rb +16 -19
- data/lib/mongo/auth/sasl_conversation_base.rb +7 -11
- data/lib/mongo/auth/scram/conversation.rb +2 -5
- data/lib/mongo/auth/scram.rb +5 -10
- data/lib/mongo/auth/scram256/conversation.rb +2 -5
- data/lib/mongo/auth/scram256.rb +1 -3
- data/lib/mongo/auth/scram_conversation_base.rb +18 -24
- data/lib/mongo/auth/stringprep/profiles/sasl.rb +17 -18
- data/lib/mongo/auth/stringprep/tables.rb +2209 -2210
- data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +36 -38
- data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +1142 -1150
- data/lib/mongo/auth/stringprep.rb +9 -12
- data/lib/mongo/auth/user/view.rb +3 -5
- data/lib/mongo/auth/user.rb +14 -24
- data/lib/mongo/auth/x509/conversation.rb +0 -3
- data/lib/mongo/auth/x509.rb +7 -9
- data/lib/mongo/auth.rb +18 -30
- data/lib/mongo/background_thread.rb +9 -17
- data/lib/mongo/bson.rb +0 -2
- data/lib/mongo/bulk_write/combineable.rb +0 -3
- data/lib/mongo/bulk_write/ordered_combiner.rb +1 -3
- data/lib/mongo/bulk_write/result.rb +11 -16
- data/lib/mongo/bulk_write/result_combiner.rb +9 -12
- data/lib/mongo/bulk_write/transformable.rb +16 -19
- data/lib/mongo/bulk_write/unordered_combiner.rb +1 -3
- data/lib/mongo/bulk_write/validatable.rb +11 -18
- data/lib/mongo/bulk_write.rb +76 -91
- data/lib/mongo/caching_cursor.rb +2 -7
- data/lib/mongo/client.rb +267 -276
- data/lib/mongo/client_encryption.rb +4 -5
- data/lib/mongo/cluster/periodic_executor.rb +2 -5
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +21 -29
- data/lib/mongo/cluster/reapers/socket_reaper.rb +1 -6
- data/lib/mongo/cluster/sdam_flow.rb +136 -159
- data/lib/mongo/cluster/topology/base.rb +15 -18
- data/lib/mongo/cluster/topology/load_balanced.rb +24 -14
- data/lib/mongo/cluster/topology/no_replica_set_options.rb +3 -6
- data/lib/mongo/cluster/topology/replica_set_no_primary.rb +20 -23
- data/lib/mongo/cluster/topology/replica_set_with_primary.rb +0 -2
- data/lib/mongo/cluster/topology/sharded.rb +19 -9
- data/lib/mongo/cluster/topology/single.rb +24 -14
- data/lib/mongo/cluster/topology/unknown.rb +20 -10
- data/lib/mongo/cluster/topology.rb +29 -25
- data/lib/mongo/cluster.rb +152 -184
- data/lib/mongo/cluster_time.rb +14 -31
- data/lib/mongo/collection/helpers.rb +5 -8
- data/lib/mongo/collection/view/aggregation/behavior.rb +1 -1
- data/lib/mongo/collection/view/aggregation.rb +10 -12
- data/lib/mongo/collection/view/builder/aggregation.rb +6 -9
- data/lib/mongo/collection/view/builder/map_reduce.rb +18 -17
- data/lib/mongo/collection/view/builder.rb +0 -1
- data/lib/mongo/collection/view/change_stream/retryable.rb +3 -8
- data/lib/mongo/collection/view/change_stream.rb +59 -58
- data/lib/mongo/collection/view/explainable.rb +11 -20
- data/lib/mongo/collection/view/immutable.rb +1 -3
- data/lib/mongo/collection/view/iterable.rb +44 -35
- data/lib/mongo/collection/view/map_reduce.rb +20 -25
- data/lib/mongo/collection/view/readable.rb +96 -94
- data/lib/mongo/collection/view/writable.rb +104 -114
- data/lib/mongo/collection/view.rb +11 -8
- data/lib/mongo/collection.rb +103 -106
- data/lib/mongo/condition_variable.rb +4 -4
- data/lib/mongo/config/options.rb +0 -3
- data/lib/mongo/config/validators/option.rb +3 -5
- data/lib/mongo/config.rb +6 -4
- data/lib/mongo/crypt/auto_decryption_context.rb +9 -3
- data/lib/mongo/crypt/auto_encrypter.rb +34 -43
- data/lib/mongo/crypt/auto_encryption_context.rb +0 -3
- data/lib/mongo/crypt/binary.rb +5 -9
- data/lib/mongo/crypt/binding.rb +150 -156
- data/lib/mongo/crypt/context.rb +20 -17
- data/lib/mongo/crypt/data_key_context.rb +2 -7
- data/lib/mongo/crypt/encryption_io.rb +29 -39
- data/lib/mongo/crypt/explicit_decryption_context.rb +9 -3
- data/lib/mongo/crypt/explicit_encrypter.rb +1 -1
- data/lib/mongo/crypt/explicit_encryption_context.rb +19 -30
- data/lib/mongo/crypt/explicit_encryption_expression_context.rb +0 -2
- data/lib/mongo/crypt/handle.rb +42 -48
- data/lib/mongo/crypt/hooks.rb +12 -15
- data/lib/mongo/crypt/kms/aws/credentials.rb +12 -16
- data/lib/mongo/crypt/kms/aws/master_document.rb +6 -9
- data/lib/mongo/crypt/kms/aws.rb +0 -2
- data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +2 -7
- data/lib/mongo/crypt/kms/azure/master_document.rb +15 -19
- data/lib/mongo/crypt/kms/azure.rb +0 -1
- data/lib/mongo/crypt/kms/credentials.rb +13 -27
- data/lib/mongo/crypt/kms/gcp/credentials.rb +12 -14
- data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +7 -9
- data/lib/mongo/crypt/kms/gcp/master_document.rb +12 -16
- data/lib/mongo/crypt/kms/gcp.rb +0 -2
- data/lib/mongo/crypt/kms/kmip/credentials.rb +7 -8
- data/lib/mongo/crypt/kms/kmip/master_document.rb +3 -5
- data/lib/mongo/crypt/kms/kmip.rb +0 -1
- data/lib/mongo/crypt/kms/local/credentials.rb +7 -8
- data/lib/mongo/crypt/kms/local/master_document.rb +2 -6
- data/lib/mongo/crypt/kms/local.rb +0 -1
- data/lib/mongo/crypt/kms/master_key_document.rb +11 -15
- data/lib/mongo/crypt/kms.rb +14 -16
- data/lib/mongo/crypt/kms_context.rb +0 -2
- data/lib/mongo/crypt/rewrap_many_data_key_context.rb +2 -7
- data/lib/mongo/crypt/rewrap_many_data_key_result.rb +2 -4
- data/lib/mongo/crypt/status.rb +12 -14
- data/lib/mongo/crypt.rb +0 -1
- data/lib/mongo/csot_timeout_holder.rb +3 -2
- data/lib/mongo/cursor/kill_spec.rb +7 -10
- data/lib/mongo/cursor.rb +74 -64
- data/lib/mongo/cursor_host.rb +8 -10
- data/lib/mongo/database/view.rb +23 -39
- data/lib/mongo/database.rb +68 -65
- data/lib/mongo/dbref.rb +0 -1
- data/lib/mongo/deprecations.rb +98 -0
- data/lib/mongo/distinguishing_semaphore.rb +0 -1
- data/lib/mongo/error/auth_error.rb +0 -2
- data/lib/mongo/error/bad_load_balancer_target.rb +0 -2
- data/lib/mongo/error/bulk_write_error.rb +7 -10
- data/lib/mongo/error/change_stream_resumable.rb +0 -2
- data/lib/mongo/error/client_closed.rb +0 -2
- data/lib/mongo/error/closed_stream.rb +1 -4
- data/lib/mongo/error/connection_check_out_timeout.rb +3 -6
- data/lib/mongo/error/connection_perished.rb +0 -2
- data/lib/mongo/error/connection_unavailable.rb +0 -2
- data/lib/mongo/error/credential_check_error.rb +0 -2
- data/lib/mongo/error/crypt_error.rb +0 -2
- data/lib/mongo/error/extra_file_chunk.rb +1 -4
- data/lib/mongo/error/failed_string_prep_validation.rb +5 -6
- data/lib/mongo/error/file_not_found.rb +0 -3
- data/lib/mongo/error/handshake_error.rb +0 -2
- data/lib/mongo/error/insufficient_iteration_count.rb +1 -4
- data/lib/mongo/error/internal_driver_error.rb +0 -2
- data/lib/mongo/error/invalid_address.rb +0 -2
- data/lib/mongo/error/invalid_application_name.rb +0 -3
- data/lib/mongo/error/invalid_bulk_operation.rb +1 -4
- data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -4
- data/lib/mongo/error/invalid_collection_name.rb +1 -4
- data/lib/mongo/error/invalid_config_option.rb +0 -3
- data/lib/mongo/error/invalid_cursor_operation.rb +0 -2
- data/lib/mongo/error/invalid_database_name.rb +1 -4
- data/lib/mongo/error/invalid_document.rb +1 -4
- data/lib/mongo/error/invalid_file.rb +0 -3
- data/lib/mongo/error/invalid_file_revision.rb +0 -3
- data/lib/mongo/error/invalid_min_pool_size.rb +0 -3
- data/lib/mongo/error/invalid_nonce.rb +0 -3
- data/lib/mongo/error/invalid_read_concern.rb +2 -4
- data/lib/mongo/error/invalid_read_option.rb +0 -3
- data/lib/mongo/error/invalid_replacement_document.rb +2 -5
- data/lib/mongo/error/invalid_server_auth_host.rb +0 -2
- data/lib/mongo/error/invalid_server_auth_response.rb +0 -2
- data/lib/mongo/error/invalid_server_preference.rb +7 -16
- data/lib/mongo/error/invalid_session.rb +1 -4
- data/lib/mongo/error/invalid_signature.rb +0 -3
- data/lib/mongo/error/invalid_transaction_operation.rb +5 -8
- data/lib/mongo/error/invalid_txt_record.rb +0 -2
- data/lib/mongo/error/invalid_update_document.rb +2 -5
- data/lib/mongo/error/invalid_uri.rb +1 -4
- data/lib/mongo/error/invalid_write_concern.rb +2 -5
- data/lib/mongo/error/kms_error.rb +0 -2
- data/lib/mongo/error/labelable.rb +0 -3
- data/lib/mongo/error/lint_error.rb +0 -2
- data/lib/mongo/error/max_bson_size.rb +8 -11
- data/lib/mongo/error/max_message_size.rb +2 -5
- data/lib/mongo/error/mismatched_domain.rb +0 -2
- data/lib/mongo/error/missing_connection.rb +0 -2
- data/lib/mongo/error/missing_file_chunk.rb +0 -3
- data/lib/mongo/error/missing_password.rb +0 -2
- data/lib/mongo/error/missing_resume_token.rb +1 -4
- data/lib/mongo/error/missing_scram_server_signature.rb +2 -4
- data/lib/mongo/error/missing_service_id.rb +0 -2
- data/lib/mongo/error/mongocryptd_spawn_error.rb +0 -2
- data/lib/mongo/error/multi_index_drop.rb +0 -3
- data/lib/mongo/error/need_primary_server.rb +0 -2
- data/lib/mongo/error/no_server_available.rb +3 -8
- data/lib/mongo/error/no_service_connection_available.rb +1 -3
- data/lib/mongo/error/no_srv_records.rb +0 -2
- data/lib/mongo/error/notable.rb +8 -16
- data/lib/mongo/error/operation_failure.rb +22 -35
- data/lib/mongo/error/parser.rb +33 -75
- data/lib/mongo/error/pool_cleared_error.rb +1 -3
- data/lib/mongo/error/pool_closed_error.rb +0 -3
- data/lib/mongo/error/pool_error.rb +0 -3
- data/lib/mongo/error/pool_paused_error.rb +0 -2
- data/lib/mongo/error/raise_original_error.rb +1 -3
- data/lib/mongo/error/read_write_retryable.rb +14 -17
- data/lib/mongo/error/sdam_error_detection.rb +3 -5
- data/lib/mongo/error/server_api_conflict.rb +0 -2
- data/lib/mongo/error/server_certificate_revoked.rb +0 -2
- data/lib/mongo/error/server_not_usable.rb +0 -2
- data/lib/mongo/error/session_ended.rb +1 -3
- data/lib/mongo/error/session_not_materialized.rb +1 -3
- data/lib/mongo/error/sessions_not_supported.rb +1 -4
- data/lib/mongo/error/snapshot_session_invalid_server_version.rb +1 -4
- data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +1 -4
- data/lib/mongo/error/socket_error.rb +0 -2
- data/lib/mongo/error/socket_timeout_error.rb +0 -2
- data/lib/mongo/error/transactions_not_supported.rb +3 -6
- data/lib/mongo/error/unchangeable_collection_option.rb +1 -4
- data/lib/mongo/error/unexpected_chunk_length.rb +0 -3
- data/lib/mongo/error/unexpected_response.rb +1 -4
- data/lib/mongo/error/unknown_payload_type.rb +0 -3
- data/lib/mongo/error/unmet_dependency.rb +0 -2
- data/lib/mongo/error/unsupported_array_filters.rb +3 -24
- data/lib/mongo/error/unsupported_collation.rb +3 -24
- data/lib/mongo/error/unsupported_features.rb +0 -2
- data/lib/mongo/error/unsupported_message_type.rb +0 -2
- data/lib/mongo/error/unsupported_option.rb +19 -21
- data/lib/mongo/error/write_retryable.rb +0 -2
- data/lib/mongo/error.rb +10 -24
- data/lib/mongo/event/base.rb +0 -2
- data/lib/mongo/event/listeners.rb +0 -3
- data/lib/mongo/event/publisher.rb +0 -3
- data/lib/mongo/event/subscriber.rb +0 -4
- data/lib/mongo/event.rb +4 -6
- data/lib/mongo/grid/file/chunk.rb +7 -10
- data/lib/mongo/grid/file/info.rb +20 -24
- data/lib/mongo/grid/file.rb +7 -8
- data/lib/mongo/grid/fs_bucket.rb +40 -48
- data/lib/mongo/grid/stream/read.rb +25 -35
- data/lib/mongo/grid/stream/write.rb +17 -22
- data/lib/mongo/grid/stream.rb +2 -4
- data/lib/mongo/grid.rb +0 -1
- data/lib/mongo/id.rb +0 -1
- data/lib/mongo/index/view.rb +68 -58
- data/lib/mongo/index.rb +7 -10
- data/lib/mongo/lint.rb +31 -37
- data/lib/mongo/loggable.rb +5 -8
- data/lib/mongo/logger.rb +1 -7
- data/lib/mongo/monitoring/cmap_log_subscriber.rb +0 -2
- data/lib/mongo/monitoring/command_log_subscriber.rb +25 -33
- data/lib/mongo/monitoring/event/cmap/base.rb +0 -2
- data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +0 -3
- data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +2 -5
- data/lib/mongo/monitoring/event/cmap/connection_closed.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/connection_created.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/connection_ready.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +0 -3
- data/lib/mongo/monitoring/event/cmap/pool_closed.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/pool_created.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/pool_ready.rb +1 -4
- data/lib/mongo/monitoring/event/cmap.rb +0 -1
- data/lib/mongo/monitoring/event/command_failed.rb +5 -9
- data/lib/mongo/monitoring/event/command_started.rb +8 -12
- data/lib/mongo/monitoring/event/command_succeeded.rb +7 -15
- data/lib/mongo/monitoring/event/secure.rb +15 -20
- data/lib/mongo/monitoring/event/server_closed.rb +1 -4
- data/lib/mongo/monitoring/event/server_description_changed.rb +4 -8
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +5 -10
- data/lib/mongo/monitoring/event/server_heartbeat_started.rb +1 -4
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +3 -8
- data/lib/mongo/monitoring/event/server_opening.rb +1 -4
- data/lib/mongo/monitoring/event/topology_changed.rb +2 -5
- data/lib/mongo/monitoring/event/topology_closed.rb +1 -4
- data/lib/mongo/monitoring/event/topology_opening.rb +1 -4
- data/lib/mongo/monitoring/event.rb +0 -1
- data/lib/mongo/monitoring/publishable.rb +20 -30
- data/lib/mongo/monitoring/sdam_log_subscriber.rb +0 -2
- data/lib/mongo/monitoring/server_closed_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/server_opening_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +5 -8
- data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +1 -3
- data/lib/mongo/monitoring.rb +38 -39
- data/lib/mongo/operation/aggregate/op_msg.rb +0 -2
- data/lib/mongo/operation/aggregate/result.rb +3 -6
- data/lib/mongo/operation/aggregate.rb +0 -2
- data/lib/mongo/operation/collections_info/result.rb +0 -3
- data/lib/mongo/operation/collections_info.rb +0 -2
- data/lib/mongo/operation/command/op_msg.rb +1 -4
- data/lib/mongo/operation/command.rb +0 -2
- data/lib/mongo/operation/context.rb +13 -16
- data/lib/mongo/operation/count/op_msg.rb +2 -4
- data/lib/mongo/operation/count.rb +0 -2
- data/lib/mongo/operation/create/op_msg.rb +2 -5
- data/lib/mongo/operation/create.rb +4 -2
- data/lib/mongo/operation/create_index/op_msg.rb +3 -7
- data/lib/mongo/operation/create_index.rb +0 -2
- data/lib/mongo/operation/create_user/op_msg.rb +2 -4
- data/lib/mongo/operation/create_user.rb +0 -2
- data/lib/mongo/operation/delete/bulk_result.rb +2 -3
- data/lib/mongo/operation/delete/op_msg.rb +3 -10
- data/lib/mongo/operation/delete/result.rb +0 -3
- data/lib/mongo/operation/delete.rb +1 -5
- data/lib/mongo/operation/distinct/op_msg.rb +2 -5
- data/lib/mongo/operation/distinct.rb +0 -2
- data/lib/mongo/operation/drop/op_msg.rb +0 -2
- data/lib/mongo/operation/drop.rb +0 -2
- data/lib/mongo/operation/drop_database/op_msg.rb +0 -2
- data/lib/mongo/operation/drop_database.rb +0 -2
- data/lib/mongo/operation/drop_index/op_msg.rb +4 -6
- data/lib/mongo/operation/drop_index.rb +0 -2
- data/lib/mongo/operation/explain/op_msg.rb +0 -2
- data/lib/mongo/operation/explain/result.rb +0 -3
- data/lib/mongo/operation/explain.rb +0 -2
- data/lib/mongo/operation/find/builder/command.rb +4 -12
- data/lib/mongo/operation/find/builder/flags.rb +9 -15
- data/lib/mongo/operation/find/builder/modifiers.rb +1 -4
- data/lib/mongo/operation/find/builder.rb +0 -1
- data/lib/mongo/operation/find/op_msg.rb +4 -12
- data/lib/mongo/operation/find/result.rb +0 -3
- data/lib/mongo/operation/find.rb +0 -2
- data/lib/mongo/operation/get_more/command_builder.rb +1 -6
- data/lib/mongo/operation/get_more/op_msg.rb +10 -4
- data/lib/mongo/operation/get_more/result.rb +0 -3
- data/lib/mongo/operation/get_more.rb +0 -2
- data/lib/mongo/operation/indexes/op_msg.rb +0 -2
- data/lib/mongo/operation/indexes/result.rb +1 -5
- data/lib/mongo/operation/indexes.rb +0 -2
- data/lib/mongo/operation/insert/bulk_result.rb +2 -6
- data/lib/mongo/operation/insert/op_msg.rb +7 -6
- data/lib/mongo/operation/insert/result.rb +0 -3
- data/lib/mongo/operation/insert.rb +2 -5
- data/lib/mongo/operation/kill_cursors/command_builder.rb +0 -3
- data/lib/mongo/operation/kill_cursors/op_msg.rb +1 -3
- data/lib/mongo/operation/kill_cursors.rb +0 -2
- data/lib/mongo/operation/list_collections/op_msg.rb +4 -6
- data/lib/mongo/operation/list_collections/result.rb +1 -4
- data/lib/mongo/operation/list_collections.rb +0 -2
- data/lib/mongo/operation/map_reduce/op_msg.rb +0 -2
- data/lib/mongo/operation/map_reduce/result.rb +3 -6
- data/lib/mongo/operation/map_reduce.rb +0 -2
- data/lib/mongo/operation/op_msg_base.rb +0 -1
- data/lib/mongo/operation/parallel_scan/op_msg.rb +4 -5
- data/lib/mongo/operation/parallel_scan/result.rb +2 -5
- data/lib/mongo/operation/parallel_scan.rb +0 -2
- data/lib/mongo/operation/remove_user/op_msg.rb +2 -4
- data/lib/mongo/operation/remove_user.rb +0 -2
- data/lib/mongo/operation/result.rb +38 -48
- data/lib/mongo/operation/shared/bypass_document_validation.rb +3 -7
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +0 -3
- data/lib/mongo/operation/shared/executable.rb +29 -31
- data/lib/mongo/operation/shared/executable_no_validate.rb +0 -3
- data/lib/mongo/operation/shared/executable_transaction_label.rb +0 -2
- data/lib/mongo/operation/shared/idable.rb +3 -6
- data/lib/mongo/operation/shared/limited.rb +0 -3
- data/lib/mongo/operation/shared/object_id_generator.rb +0 -3
- data/lib/mongo/operation/shared/op_msg_executable.rb +0 -2
- data/lib/mongo/operation/shared/polymorphic_lookup.rb +0 -2
- data/lib/mongo/operation/shared/polymorphic_result.rb +2 -4
- data/lib/mongo/operation/shared/read_preference_supported.rb +10 -15
- data/lib/mongo/operation/shared/response_handling.rb +13 -26
- data/lib/mongo/operation/shared/result/aggregatable.rb +12 -13
- data/lib/mongo/operation/shared/sessions_supported.rb +87 -99
- data/lib/mongo/operation/shared/specifiable.rb +37 -59
- data/lib/mongo/operation/shared/write.rb +12 -17
- data/lib/mongo/operation/shared/write_concern_supported.rb +4 -7
- data/lib/mongo/operation/update/bulk_result.rb +13 -17
- data/lib/mongo/operation/update/op_msg.rb +2 -5
- data/lib/mongo/operation/update/result.rb +5 -5
- data/lib/mongo/operation/update.rb +1 -5
- data/lib/mongo/operation/update_user/op_msg.rb +2 -4
- data/lib/mongo/operation/update_user.rb +0 -2
- data/lib/mongo/operation/users_info/op_msg.rb +2 -4
- data/lib/mongo/operation/users_info/result.rb +1 -4
- data/lib/mongo/operation/users_info.rb +0 -2
- data/lib/mongo/operation/write_command/op_msg.rb +2 -10
- data/lib/mongo/operation/write_command.rb +0 -2
- data/lib/mongo/operation.rb +9 -14
- data/lib/mongo/options/mapper.rb +8 -15
- data/lib/mongo/options/redacted.rb +7 -9
- data/lib/mongo/options.rb +0 -1
- data/lib/mongo/protocol/bit_vector.rb +3 -5
- data/lib/mongo/protocol/caching_hash.rb +2 -7
- data/lib/mongo/protocol/compressed.rb +5 -10
- data/lib/mongo/protocol/get_more.rb +2 -8
- data/lib/mongo/protocol/kill_cursors.rb +2 -8
- data/lib/mongo/protocol/message.rb +103 -105
- data/lib/mongo/protocol/msg.rb +48 -63
- data/lib/mongo/protocol/query.rb +32 -41
- data/lib/mongo/protocol/registry.rb +2 -5
- data/lib/mongo/protocol/reply.rb +10 -16
- data/lib/mongo/protocol/serializers.rb +41 -59
- data/lib/mongo/protocol.rb +0 -1
- data/lib/mongo/query_cache.rb +7 -15
- data/lib/mongo/retryable/backpressure.rb +31 -0
- data/lib/mongo/retryable/base_worker.rb +39 -13
- data/lib/mongo/retryable/read_worker.rb +77 -21
- data/lib/mongo/retryable/retry_policy.rb +59 -0
- data/lib/mongo/retryable/write_worker.rb +155 -56
- data/lib/mongo/retryable.rb +70 -9
- data/lib/mongo/search_index/view.rb +30 -10
- data/lib/mongo/semaphore.rb +0 -1
- data/lib/mongo/server/app_metadata/environment.rb +3 -3
- data/lib/mongo/server/app_metadata/platform.rb +17 -4
- data/lib/mongo/server/app_metadata.rb +4 -5
- data/lib/mongo/server/connection.rb +79 -61
- data/lib/mongo/server/connection_base.rb +43 -53
- data/lib/mongo/server/connection_common.rb +41 -64
- data/lib/mongo/server/connection_pool/generation_manager.rb +6 -11
- data/lib/mongo/server/connection_pool/populator.rb +1 -4
- data/lib/mongo/server/connection_pool.rb +195 -167
- data/lib/mongo/server/description/features.rb +51 -59
- data/lib/mongo/server/description/load_balancer.rb +0 -2
- data/lib/mongo/server/description.rb +117 -138
- data/lib/mongo/server/monitor/app_metadata.rb +3 -4
- data/lib/mongo/server/monitor/connection.rb +28 -35
- data/lib/mongo/server/monitor.rb +65 -60
- data/lib/mongo/server/pending_connection.rb +70 -71
- data/lib/mongo/server/push_monitor/connection.rb +0 -3
- data/lib/mongo/server/push_monitor.rb +21 -29
- data/lib/mongo/server/round_trip_time_calculator.rb +11 -17
- data/lib/mongo/server.rb +62 -94
- data/lib/mongo/server_selector/base.rb +133 -157
- data/lib/mongo/server_selector/nearest.rb +2 -5
- data/lib/mongo/server_selector/primary.rb +1 -5
- data/lib/mongo/server_selector/primary_preferred.rb +2 -6
- data/lib/mongo/server_selector/secondary.rb +2 -6
- data/lib/mongo/server_selector/secondary_preferred.rb +1 -5
- data/lib/mongo/server_selector.rb +3 -4
- data/lib/mongo/session/server_session.rb +6 -7
- data/lib/mongo/session/session_pool.rb +20 -34
- data/lib/mongo/session.rb +334 -199
- data/lib/mongo/socket/ocsp_cache.rb +8 -13
- data/lib/mongo/socket/ocsp_verifier.rb +69 -70
- data/lib/mongo/socket/ssl.rb +44 -43
- data/lib/mongo/socket/tcp.rb +5 -8
- data/lib/mongo/socket/unix.rb +0 -4
- data/lib/mongo/socket.rb +80 -102
- data/lib/mongo/srv/monitor.rb +10 -11
- data/lib/mongo/srv/resolver.rb +15 -24
- data/lib/mongo/srv/result.rb +25 -21
- data/lib/mongo/srv.rb +0 -1
- data/lib/mongo/timeout.rb +4 -11
- data/lib/mongo/topology_version.rb +8 -13
- data/lib/mongo/tracing/open_telemetry/command_tracer.rb +320 -0
- data/lib/mongo/tracing/open_telemetry/operation_tracer.rb +227 -0
- data/lib/mongo/tracing/open_telemetry/tracer.rb +236 -0
- data/lib/mongo/{error/server_api_not_supported.rb → tracing/open_telemetry.rb} +10 -10
- data/lib/mongo/tracing.rb +42 -0
- data/lib/mongo/uri/options_mapper.rb +135 -126
- data/lib/mongo/uri/srv_protocol.rb +34 -42
- data/lib/mongo/uri.rb +95 -139
- data/lib/mongo/utils.rb +5 -12
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern/acknowledged.rb +0 -2
- data/lib/mongo/write_concern/base.rb +6 -6
- data/lib/mongo/write_concern/unacknowledged.rb +0 -2
- data/lib/mongo/write_concern.rb +14 -15
- data/lib/mongo.rb +4 -3
- data/mongo.gemspec +17 -17
- metadata +11 -5
- data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +0 -32
- data/lib/mongo/operation/shared/validatable.rb +0 -87
data/lib/mongo/write_concern.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2015-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -20,7 +19,6 @@ require 'mongo/write_concern/acknowledged'
|
|
|
20
19
|
require 'mongo/write_concern/unacknowledged'
|
|
21
20
|
|
|
22
21
|
module Mongo
|
|
23
|
-
|
|
24
22
|
# Base module for all write concern specific behavior.
|
|
25
23
|
#
|
|
26
24
|
# @since 2.0.0
|
|
@@ -31,36 +29,36 @@ module Mongo
|
|
|
31
29
|
#
|
|
32
30
|
# @since 2.0.0
|
|
33
31
|
# @deprecated
|
|
34
|
-
W = :w
|
|
32
|
+
W = :w
|
|
35
33
|
|
|
36
34
|
# The journal write concern.
|
|
37
35
|
#
|
|
38
36
|
# @since 2.0.0
|
|
39
37
|
# @deprecated
|
|
40
|
-
J = :j
|
|
38
|
+
J = :j
|
|
41
39
|
|
|
42
40
|
# The file sync write concern.
|
|
43
41
|
#
|
|
44
42
|
# @since 2.0.0
|
|
45
43
|
# @deprecated
|
|
46
|
-
FSYNC = :fsync
|
|
44
|
+
FSYNC = :fsync
|
|
47
45
|
|
|
48
46
|
# The wtimeout write concern.
|
|
49
47
|
#
|
|
50
48
|
# @since 2.0.0
|
|
51
49
|
# @deprecated
|
|
52
|
-
WTIMEOUT = :wtimeout
|
|
50
|
+
WTIMEOUT = :wtimeout
|
|
53
51
|
|
|
54
52
|
# The GLE command name.
|
|
55
53
|
#
|
|
56
54
|
# @since 2.0.0
|
|
57
55
|
# @deprecated
|
|
58
|
-
GET_LAST_ERROR = :getlasterror
|
|
56
|
+
GET_LAST_ERROR = :getlasterror
|
|
59
57
|
|
|
60
58
|
# The default write concern is to acknowledge on a single server.
|
|
61
59
|
#
|
|
62
60
|
# @since 2.0.0
|
|
63
|
-
DEFAULT = {
|
|
61
|
+
DEFAULT = {}.freeze
|
|
64
62
|
|
|
65
63
|
# Create a write concern object for the provided options.
|
|
66
64
|
#
|
|
@@ -76,7 +74,7 @@ module Mongo
|
|
|
76
74
|
# @option options :j [ true, false ] Whether to acknowledge a write to
|
|
77
75
|
# the journal.
|
|
78
76
|
# @option options :fsync [ true, false ] Should the write be synced to
|
|
79
|
-
#
|
|
77
|
+
# disk.
|
|
80
78
|
# @option options :wtimeout [ Integer ] The number of milliseconds to
|
|
81
79
|
# wait for acknowledgement before raising an error.
|
|
82
80
|
#
|
|
@@ -87,12 +85,13 @@ module Mongo
|
|
|
87
85
|
# @since 2.0.0
|
|
88
86
|
def get(options)
|
|
89
87
|
return options if options.is_a?(Base)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
88
|
+
|
|
89
|
+
return unless options
|
|
90
|
+
|
|
91
|
+
if (options[:w] || options['w']) == 0
|
|
92
|
+
Unacknowledged.new(options)
|
|
93
|
+
else
|
|
94
|
+
Acknowledged.new(options)
|
|
96
95
|
end
|
|
97
96
|
end
|
|
98
97
|
end
|
data/lib/mongo.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -42,6 +41,7 @@ require 'mongo/condition_variable'
|
|
|
42
41
|
require 'mongo/csot_timeout_holder'
|
|
43
42
|
require 'mongo/options'
|
|
44
43
|
require 'mongo/loggable'
|
|
44
|
+
require 'mongo/deprecations'
|
|
45
45
|
require 'mongo/cluster_time'
|
|
46
46
|
require 'mongo/topology_version'
|
|
47
47
|
require 'mongo/monitoring'
|
|
@@ -74,6 +74,7 @@ require 'mongo/session'
|
|
|
74
74
|
require 'mongo/socket'
|
|
75
75
|
require 'mongo/srv'
|
|
76
76
|
require 'mongo/timeout'
|
|
77
|
+
require 'mongo/tracing'
|
|
77
78
|
require 'mongo/uri'
|
|
78
79
|
require 'mongo/version'
|
|
79
80
|
require 'mongo/write_concern'
|
|
@@ -81,7 +82,6 @@ require 'mongo/utils'
|
|
|
81
82
|
require 'mongo/config'
|
|
82
83
|
|
|
83
84
|
module Mongo
|
|
84
|
-
|
|
85
85
|
class << self
|
|
86
86
|
extend Forwardable
|
|
87
87
|
|
|
@@ -100,6 +100,7 @@ module Mongo
|
|
|
100
100
|
delegate_option Config, :broken_view_aggregate
|
|
101
101
|
delegate_option Config, :broken_view_options
|
|
102
102
|
delegate_option Config, :validate_update_replace
|
|
103
|
+
delegate_option Config, :csfle_convert_to_ruby_types
|
|
103
104
|
end
|
|
104
105
|
|
|
105
106
|
# Clears the driver's OCSP response cache.
|
|
@@ -124,7 +125,7 @@ module Mongo
|
|
|
124
125
|
# an OpenSSL::SSL::SSLContext object as an argument.
|
|
125
126
|
module_function def tls_context_hooks=(hooks)
|
|
126
127
|
unless hooks.is_a?(Array) && hooks.all? { |hook| hook.is_a?(Proc) }
|
|
127
|
-
raise ArgumentError,
|
|
128
|
+
raise ArgumentError, 'TLS context hooks must be an array of Procs'
|
|
128
129
|
end
|
|
129
130
|
|
|
130
131
|
@tls_context_hooks = hooks
|
data/mongo.gemspec
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
|
-
lib = File.expand_path('
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
5
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
6
5
|
require 'mongo/version'
|
|
7
6
|
|
|
8
7
|
Gem::Specification.new do |s|
|
|
9
|
-
s.name
|
|
10
|
-
s.version
|
|
11
|
-
s.platform
|
|
12
|
-
s.authors
|
|
13
|
-
s.email
|
|
14
|
-
s.homepage
|
|
15
|
-
s.summary
|
|
16
|
-
s.license
|
|
17
|
-
s.description
|
|
8
|
+
s.name = 'mongo'
|
|
9
|
+
s.version = Mongo::VERSION
|
|
10
|
+
s.platform = Gem::Platform::RUBY
|
|
11
|
+
s.authors = [ 'The MongoDB Ruby Team' ]
|
|
12
|
+
s.email = 'dbx-ruby@mongodb.com'
|
|
13
|
+
s.homepage = 'https://mongodb.com/docs/ruby-driver/'
|
|
14
|
+
s.summary = 'Ruby driver for MongoDB'
|
|
15
|
+
s.license = 'Apache-2.0'
|
|
16
|
+
s.description = <<~DESC
|
|
18
17
|
A pure-Ruby driver for connecting to, querying, and manipulating MongoDB
|
|
19
18
|
databases. Officially developed and supported by MongoDB, with love for
|
|
20
19
|
the Ruby community.
|
|
21
20
|
DESC
|
|
22
21
|
|
|
23
22
|
s.metadata = {
|
|
23
|
+
'rubygems_mfa_required' => 'true',
|
|
24
24
|
'bug_tracker_uri' => 'https://jira.mongodb.org/projects/RUBY',
|
|
25
25
|
'changelog_uri' => 'https://github.com/mongodb/mongo-ruby-driver/releases',
|
|
26
26
|
'homepage_uri' => 'https://mongodb.com/docs/ruby-driver/',
|
|
@@ -28,14 +28,14 @@ Gem::Specification.new do |s|
|
|
|
28
28
|
'source_code_uri' => 'https://github.com/mongodb/mongo-ruby-driver',
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
s.files
|
|
32
|
-
s.files
|
|
31
|
+
s.files = Dir.glob('{bin,lib}/**/*')
|
|
32
|
+
s.files += %w[mongo.gemspec LICENSE README.md CONTRIBUTING.md]
|
|
33
33
|
|
|
34
|
-
s.executables
|
|
35
|
-
s.require_paths
|
|
36
|
-
s.bindir
|
|
34
|
+
s.executables = [ 'mongo_console' ]
|
|
35
|
+
s.require_paths = [ 'lib' ]
|
|
36
|
+
s.bindir = 'bin'
|
|
37
37
|
|
|
38
|
-
s.required_ruby_version =
|
|
38
|
+
s.required_ruby_version = '>= 2.7'
|
|
39
39
|
|
|
40
40
|
s.add_dependency 'base64'
|
|
41
41
|
s.add_dependency 'bson', '>=4.14.1', '<6.0.0'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mongo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.24.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- The MongoDB Ruby Team
|
|
@@ -193,6 +193,7 @@ files:
|
|
|
193
193
|
- lib/mongo/database.rb
|
|
194
194
|
- lib/mongo/database/view.rb
|
|
195
195
|
- lib/mongo/dbref.rb
|
|
196
|
+
- lib/mongo/deprecations.rb
|
|
196
197
|
- lib/mongo/distinguishing_semaphore.rb
|
|
197
198
|
- lib/mongo/error.rb
|
|
198
199
|
- lib/mongo/error/auth_error.rb
|
|
@@ -268,7 +269,6 @@ files:
|
|
|
268
269
|
- lib/mongo/error/read_write_retryable.rb
|
|
269
270
|
- lib/mongo/error/sdam_error_detection.rb
|
|
270
271
|
- lib/mongo/error/server_api_conflict.rb
|
|
271
|
-
- lib/mongo/error/server_api_not_supported.rb
|
|
272
272
|
- lib/mongo/error/server_certificate_revoked.rb
|
|
273
273
|
- lib/mongo/error/server_not_usable.rb
|
|
274
274
|
- lib/mongo/error/server_timeout_error.rb
|
|
@@ -434,11 +434,9 @@ files:
|
|
|
434
434
|
- lib/mongo/operation/shared/read_preference_supported.rb
|
|
435
435
|
- lib/mongo/operation/shared/response_handling.rb
|
|
436
436
|
- lib/mongo/operation/shared/result/aggregatable.rb
|
|
437
|
-
- lib/mongo/operation/shared/result/use_legacy_error_parser.rb
|
|
438
437
|
- lib/mongo/operation/shared/sessions_supported.rb
|
|
439
438
|
- lib/mongo/operation/shared/specifiable.rb
|
|
440
439
|
- lib/mongo/operation/shared/timed.rb
|
|
441
|
-
- lib/mongo/operation/shared/validatable.rb
|
|
442
440
|
- lib/mongo/operation/shared/write.rb
|
|
443
441
|
- lib/mongo/operation/shared/write_concern_supported.rb
|
|
444
442
|
- lib/mongo/operation/update.rb
|
|
@@ -471,8 +469,10 @@ files:
|
|
|
471
469
|
- lib/mongo/protocol/serializers.rb
|
|
472
470
|
- lib/mongo/query_cache.rb
|
|
473
471
|
- lib/mongo/retryable.rb
|
|
472
|
+
- lib/mongo/retryable/backpressure.rb
|
|
474
473
|
- lib/mongo/retryable/base_worker.rb
|
|
475
474
|
- lib/mongo/retryable/read_worker.rb
|
|
475
|
+
- lib/mongo/retryable/retry_policy.rb
|
|
476
476
|
- lib/mongo/retryable/write_worker.rb
|
|
477
477
|
- lib/mongo/search_index/view.rb
|
|
478
478
|
- lib/mongo/semaphore.rb
|
|
@@ -520,6 +520,11 @@ files:
|
|
|
520
520
|
- lib/mongo/srv/result.rb
|
|
521
521
|
- lib/mongo/timeout.rb
|
|
522
522
|
- lib/mongo/topology_version.rb
|
|
523
|
+
- lib/mongo/tracing.rb
|
|
524
|
+
- lib/mongo/tracing/open_telemetry.rb
|
|
525
|
+
- lib/mongo/tracing/open_telemetry/command_tracer.rb
|
|
526
|
+
- lib/mongo/tracing/open_telemetry/operation_tracer.rb
|
|
527
|
+
- lib/mongo/tracing/open_telemetry/tracer.rb
|
|
523
528
|
- lib/mongo/uri.rb
|
|
524
529
|
- lib/mongo/uri/options_mapper.rb
|
|
525
530
|
- lib/mongo/uri/srv_protocol.rb
|
|
@@ -534,6 +539,7 @@ homepage: https://mongodb.com/docs/ruby-driver/
|
|
|
534
539
|
licenses:
|
|
535
540
|
- Apache-2.0
|
|
536
541
|
metadata:
|
|
542
|
+
rubygems_mfa_required: 'true'
|
|
537
543
|
bug_tracker_uri: https://jira.mongodb.org/projects/RUBY
|
|
538
544
|
changelog_uri: https://github.com/mongodb/mongo-ruby-driver/releases
|
|
539
545
|
homepage_uri: https://mongodb.com/docs/ruby-driver/
|
|
@@ -553,7 +559,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
553
559
|
- !ruby/object:Gem::Version
|
|
554
560
|
version: '0'
|
|
555
561
|
requirements: []
|
|
556
|
-
rubygems_version:
|
|
562
|
+
rubygems_version: 4.0.10
|
|
557
563
|
specification_version: 4
|
|
558
564
|
summary: Ruby driver for MongoDB
|
|
559
565
|
test_files: []
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
|
-
|
|
4
|
-
# Copyright (C) 2019-2020 MongoDB Inc.
|
|
5
|
-
#
|
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
# See the License for the specific language governing permissions and
|
|
16
|
-
# limitations under the License.
|
|
17
|
-
|
|
18
|
-
module Mongo
|
|
19
|
-
module Operation
|
|
20
|
-
class Result
|
|
21
|
-
|
|
22
|
-
# This module creates the Parser instance in legacy mode.
|
|
23
|
-
#
|
|
24
|
-
# @api private
|
|
25
|
-
module UseLegacyErrorParser
|
|
26
|
-
def parser
|
|
27
|
-
@parser ||= Error::Parser.new(first_document, replies, legacy: true)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
|
-
|
|
4
|
-
# Copyright (C) 2021 MongoDB Inc.
|
|
5
|
-
#
|
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
# See the License for the specific language governing permissions and
|
|
16
|
-
# limitations under the License.
|
|
17
|
-
|
|
18
|
-
module Mongo
|
|
19
|
-
module Operation
|
|
20
|
-
|
|
21
|
-
# @api private
|
|
22
|
-
module Validatable
|
|
23
|
-
|
|
24
|
-
def validate_find_options(connection, selector)
|
|
25
|
-
if selector.key?(:hint) &&
|
|
26
|
-
!connection.features.find_and_modify_option_validation_enabled?
|
|
27
|
-
then
|
|
28
|
-
raise Error::UnsupportedOption.hint_error
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
if selector.key?(:arrayFilters) &&
|
|
32
|
-
!connection.features.array_filters_enabled?
|
|
33
|
-
then
|
|
34
|
-
raise Error::UnsupportedArrayFilters
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
if selector.key?(:collation) &&
|
|
38
|
-
!connection.features.collation_enabled?
|
|
39
|
-
then
|
|
40
|
-
raise Error::UnsupportedCollation
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# selector_or_item here is either:
|
|
45
|
-
# - The selector as used in a findAndModify command, or
|
|
46
|
-
# - One of the array elements in the updates array in an update command.
|
|
47
|
-
def validate_hint_on_update(connection, selector_or_item)
|
|
48
|
-
if selector_or_item.key?(:hint) &&
|
|
49
|
-
!connection.features.update_delete_option_validation_enabled?
|
|
50
|
-
then
|
|
51
|
-
raise Error::UnsupportedOption.hint_error
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# selector_or_item here is either:
|
|
56
|
-
# - The selector as used in a findAndModify command, or
|
|
57
|
-
# - One of the array elements in the updates array in an update command.
|
|
58
|
-
def validate_array_filters(connection, selector_or_item)
|
|
59
|
-
if selector_or_item.key?(:arrayFilters) &&
|
|
60
|
-
!connection.features.array_filters_enabled?
|
|
61
|
-
then
|
|
62
|
-
raise Error::UnsupportedArrayFilters
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# selector_or_item here is either:
|
|
67
|
-
# - The selector as used in a findAndModify command, or
|
|
68
|
-
# - One of the array elements in the updates array in an update command.
|
|
69
|
-
def validate_collation(connection, selector_or_item)
|
|
70
|
-
if selector_or_item.key?(:collation) &&
|
|
71
|
-
!connection.features.collation_enabled?
|
|
72
|
-
then
|
|
73
|
-
raise Error::UnsupportedCollation
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def validate_updates(connection, updates)
|
|
78
|
-
updates.each do |update|
|
|
79
|
-
validate_array_filters(connection, update)
|
|
80
|
-
validate_collation(connection, update)
|
|
81
|
-
validate_hint_on_update(connection, update)
|
|
82
|
-
end
|
|
83
|
-
updates
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|