Skip to content

Commit 5082e38

Browse files
committed
RUBY-1163 Fix creating indexes on subdocument fields in server < 2.6
1 parent 7702b75 commit 5082e38

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

lib/mongo/operation/write/create_index.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def index_documents
5959
end
6060

6161
def message
62-
Protocol::Insert.new(db_name, Index::COLLECTION, index_documents)
62+
Protocol::Insert.new(db_name, Index::COLLECTION, index_documents, validating_keys: false)
6363
end
6464
end
6565
end

lib/mongo/protocol/insert.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def initialize(database, collection, documents, options = {})
5454
@documents = documents
5555
@flags = options[:flags] || []
5656
@upconverter = Upconverter.new(collection, documents, options)
57+
@options = options
5758
end
5859

5960
# Return the event payload for monitoring.
@@ -76,7 +77,7 @@ def payload
7677
private
7778

7879
def validating_keys?
79-
true
80+
@options.fetch(:validating_keys, true)
8081
end
8182

8283
attr_reader :upconverter

spec/mongo/index/view_spec.rb

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,31 @@
141141
end
142142

143143
after do
144-
view.drop_one('random_1')
144+
begin; view.drop_one('random_1'); rescue; end
145145
end
146146

147147
it 'returns ok' do
148148
expect(result).to be_successful
149149
end
150+
151+
context 'when the index is created on an subdocument field' do
152+
153+
let(:spec) do
154+
{ 'sub_document.random' => 1 }
155+
end
156+
157+
let(:result) do
158+
view.create_one(spec, unique: true)
159+
end
160+
161+
after do
162+
begin; view.drop_one('sub_document.random_1'); rescue; end
163+
end
164+
165+
it 'returns ok' do
166+
expect(result).to be_successful
167+
end
168+
end
150169
end
151170

152171
context 'when index creation fails' do

0 commit comments

Comments
 (0)