From fa0e3444915300449ebdab2b946cf3d5fa7eda28 Mon Sep 17 00:00:00 2001 From: Oleg Pudeyev <39304720+p-mongo@users.noreply.github.com> Date: Mon, 20 Apr 2020 12:43:09 -0400 Subject: [PATCH] RUBY-2202 Deprecate geoHaystack and geoSearch (#1878) Co-authored-by: Oleg Pudeyev --- lib/mongo/index.rb | 1 + lib/mongo/index/view.rb | 8 +++++++- spec/mongo/index/view_spec.rb | 38 +++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/lib/mongo/index.rb b/lib/mongo/index.rb index 4ecd0faecd..fc6a9a2cd1 100644 --- a/lib/mongo/index.rb +++ b/lib/mongo/index.rb @@ -49,6 +49,7 @@ module Index # Specify a geoHaystack index. # # @since 2.0.0 + # @deprecated GEOHAYSTACK = 'geoHaystack'.freeze # Encodes a text index. diff --git a/lib/mongo/index/view.rb b/lib/mongo/index/view.rb index d66bfb7234..a235767c73 100644 --- a/lib/mongo/index/view.rb +++ b/lib/mongo/index/view.rb @@ -151,8 +151,14 @@ def create_one(keys, options = {}) def create_many(*models) client.send(:with_session, @options) do |session| server = next_primary(nil, session) + indexes = normalize_models(models.flatten, server) + indexes.each do |index| + if index[:bucketSize] || index['bucketSize'] + client.log_warn("Haystack indexes (bucketSize index option) are deprecated as of MongoDB 4.4") + end + end spec = { - indexes: normalize_models(models.flatten, server), + indexes: indexes, db_name: database.name, coll_name: collection.name, session: session diff --git a/spec/mongo/index/view_spec.rb b/spec/mongo/index/view_spec.rb index b20b5b6d8e..571640c323 100644 --- a/spec/mongo/index/view_spec.rb +++ b/spec/mongo/index/view_spec.rb @@ -505,6 +505,25 @@ end end end + + context 'when using bucket option' do + + let(:spec) do + { 'any' => 1 } + end + + let(:result) do + view.create_many([key: spec, bucket_size: 1]) + end + + it 'warns of deprecation' do + RSpec::Mocks.with_temporary_scope do + view.client.should receive(:log_warn).and_call_original + + result + end + end + end end describe '#create_one' do @@ -592,6 +611,25 @@ expect(result).to be_successful end end + + context 'when using bucket option' do + + let(:spec) do + { 'any' => 1 } + end + + let(:result) do + view.create_one(spec, bucket_size: 1) + end + + it 'warns of deprecation' do + RSpec::Mocks.with_temporary_scope do + view.client.should receive(:log_warn).and_call_original + + result + end + end + end end context 'when index creation fails' do