diff --git a/x/mongo/driver/connstring/connstring.go b/x/mongo/driver/connstring/connstring.go index f5f8631b57..25869ef425 100644 --- a/x/mongo/driver/connstring/connstring.go +++ b/x/mongo/driver/connstring/connstring.go @@ -746,7 +746,9 @@ func (p *parser) addOption(pair string) error { p.ReadPreference = value case "readpreferencetags": if value == "" { - // for when readPreferenceTags= at end of URI + // If "readPreferenceTags=" is supplied, append an empty map to tag sets to + // represent a wild-card. + p.ReadPreferenceTagSets = append(p.ReadPreferenceTagSets, map[string]string{}) break } diff --git a/x/mongo/driver/connstring/connstring_test.go b/x/mongo/driver/connstring/connstring_test.go index b051c7e588..c5eccdc077 100644 --- a/x/mongo/driver/connstring/connstring_test.go +++ b/x/mongo/driver/connstring/connstring_test.go @@ -382,8 +382,8 @@ func TestReadPreferenceTags(t *testing.T) { {s: "readPreferenceTags=one:1,two:2", expected: []map[string]string{{"one": "1", "two": "2"}}}, {s: "readPreferenceTags=one:1&readPreferenceTags=two:2", expected: []map[string]string{{"one": "1"}, {"two": "2"}}}, {s: "readPreferenceTags=one:1:3,two:2", err: true}, - {s: "readPreferenceTags=one:1&readPreferenceTags=two:2&readPreferenceTags=", expected: []map[string]string{{"one": "1"}, {"two": "2"}}}, - {s: "readPreferenceTags=", expected: nil}, + {s: "readPreferenceTags=one:1&readPreferenceTags=two:2&readPreferenceTags=", expected: []map[string]string{{"one": "1"}, {"two": "2"}, {}}}, + {s: "readPreferenceTags=", expected: []map[string]string{{}}}, } for _, test := range tests {