diff --git a/src/box/tuple_compare.cc b/src/box/tuple_compare.cc
index 8e11ac5a8edc878732c19efe21f231c8e639c7a1..cf8fc130e80329ab40f1d003b65eebedcfb29b80 100644
--- a/src/box/tuple_compare.cc
+++ b/src/box/tuple_compare.cc
@@ -413,6 +413,8 @@ tuple_compare_field_with_hint(const char *field_a, enum mp_type a_type,
 	case FIELD_TYPE_NUMBER:
 		return mp_compare_number_with_hint(field_a, a_type,
 						   field_b, b_type);
+	case FIELD_TYPE_BOOLEAN:
+		return mp_compare_bool(field_a, field_b);
 	case FIELD_TYPE_SCALAR:
 		return coll != NULL ?
 		       mp_compare_scalar_coll(field_a, field_b, coll) :
diff --git a/test/engine/null.result b/test/engine/null.result
index e216cc11f0dd258b3f7953a19bbccb40e5539f7d..54b4ea9abca06ed25b10164d66a05d9657960ac4 100644
--- a/test/engine/null.result
+++ b/test/engine/null.result
@@ -627,3 +627,123 @@ s:select{}
 s:drop()
 ---
 ...
+-- Check nullable indexes with other types
+s = box.schema.space.create('test', {engine = engine})
+---
+...
+_ = s:create_index('pk')
+---
+...
+_ = s:create_index('i1', {parts = {{2, 'string', is_nullable = true}}})
+---
+...
+_ = s:create_index('i2', {parts = {{3, 'number', is_nullable = true}}})
+---
+...
+_ = s:create_index('i3', {parts = {{4, 'integer', is_nullable = true}}})
+---
+...
+_ = s:create_index('i4', {parts = {{5, 'boolean', is_nullable = true}}, unique = false})
+---
+...
+_ = s:create_index('i5', {parts = {{6, 'scalar', is_nullable = true}}})
+---
+...
+_ = s:auto_increment{box.NULL, 1.11, -111, false, '111'}
+---
+...
+_ = s:auto_increment{'222', box.NULL, -222, true, 222}
+---
+...
+_ = s:auto_increment{'333', 3.33, box.NULL, false, 3.33}
+---
+...
+_ = s:auto_increment{'444', 4.44, -444, box.NULL, true}
+---
+...
+_ = s:auto_increment{'555', 5.55, -555, false, box.NULL}
+---
+...
+_ = s:auto_increment{box.NULL, 6.66, -666, true, '666'}
+---
+...
+_ = s:auto_increment{'777', box.NULL, -777, false, 777}
+---
+...
+_ = s:auto_increment{'888', 8.88, box.NULL, true, 8.88}
+---
+...
+_ = s:auto_increment{'999', 9.99, -999, box.NULL, false}
+---
+...
+_ = s:auto_increment{'000', 0.00, -000, true, box.NULL}
+---
+...
+s.index.i1:select()
+---
+- - [1, null, 1.11, -111, false, '111']
+  - [6, null, 6.66, -666, true, '666']
+  - [10, '000', 0, 0, true, null]
+  - [2, '222', null, -222, true, 222]
+  - [3, '333', 3.33, null, false, 3.33]
+  - [4, '444', 4.44, -444, null, true]
+  - [5, '555', 5.55, -555, false, null]
+  - [7, '777', null, -777, false, 777]
+  - [8, '888', 8.88, null, true, 8.88]
+  - [9, '999', 9.99, -999, null, false]
+...
+s.index.i2:select()
+---
+- - [2, '222', null, -222, true, 222]
+  - [7, '777', null, -777, false, 777]
+  - [10, '000', 0, 0, true, null]
+  - [1, null, 1.11, -111, false, '111']
+  - [3, '333', 3.33, null, false, 3.33]
+  - [4, '444', 4.44, -444, null, true]
+  - [5, '555', 5.55, -555, false, null]
+  - [6, null, 6.66, -666, true, '666']
+  - [8, '888', 8.88, null, true, 8.88]
+  - [9, '999', 9.99, -999, null, false]
+...
+s.index.i3:select()
+---
+- - [3, '333', 3.33, null, false, 3.33]
+  - [8, '888', 8.88, null, true, 8.88]
+  - [9, '999', 9.99, -999, null, false]
+  - [7, '777', null, -777, false, 777]
+  - [6, null, 6.66, -666, true, '666']
+  - [5, '555', 5.55, -555, false, null]
+  - [4, '444', 4.44, -444, null, true]
+  - [2, '222', null, -222, true, 222]
+  - [1, null, 1.11, -111, false, '111']
+  - [10, '000', 0, 0, true, null]
+...
+s.index.i4:select()
+---
+- - [4, '444', 4.44, -444, null, true]
+  - [9, '999', 9.99, -999, null, false]
+  - [1, null, 1.11, -111, false, '111']
+  - [3, '333', 3.33, null, false, 3.33]
+  - [5, '555', 5.55, -555, false, null]
+  - [7, '777', null, -777, false, 777]
+  - [2, '222', null, -222, true, 222]
+  - [6, null, 6.66, -666, true, '666']
+  - [8, '888', 8.88, null, true, 8.88]
+  - [10, '000', 0, 0, true, null]
+...
+s.index.i5:select()
+---
+- - [5, '555', 5.55, -555, false, null]
+  - [10, '000', 0, 0, true, null]
+  - [9, '999', 9.99, -999, null, false]
+  - [4, '444', 4.44, -444, null, true]
+  - [3, '333', 3.33, null, false, 3.33]
+  - [8, '888', 8.88, null, true, 8.88]
+  - [2, '222', null, -222, true, 222]
+  - [7, '777', null, -777, false, 777]
+  - [1, null, 1.11, -111, false, '111']
+  - [6, null, 6.66, -666, true, '666']
+...
+s:drop()
+---
+...
diff --git a/test/engine/null.test.lua b/test/engine/null.test.lua
index c15a47cacb3c6ecf8b49cba0049402f287ac3ee7..33dfe339f4e1b979fe55d95d9ee2198914496068 100644
--- a/test/engine/null.test.lua
+++ b/test/engine/null.test.lua
@@ -211,3 +211,31 @@ t3.field1, t3.field2, t3.field3, t3.field4, t3.field5, t3.field6, t3.field7
 s:select{}
 
 s:drop()
+
+-- Check nullable indexes with other types
+s = box.schema.space.create('test', {engine = engine})
+_ = s:create_index('pk')
+_ = s:create_index('i1', {parts = {{2, 'string', is_nullable = true}}})
+_ = s:create_index('i2', {parts = {{3, 'number', is_nullable = true}}})
+_ = s:create_index('i3', {parts = {{4, 'integer', is_nullable = true}}})
+_ = s:create_index('i4', {parts = {{5, 'boolean', is_nullable = true}}, unique = false})
+_ = s:create_index('i5', {parts = {{6, 'scalar', is_nullable = true}}})
+
+_ = s:auto_increment{box.NULL, 1.11, -111, false, '111'}
+_ = s:auto_increment{'222', box.NULL, -222, true, 222}
+_ = s:auto_increment{'333', 3.33, box.NULL, false, 3.33}
+_ = s:auto_increment{'444', 4.44, -444, box.NULL, true}
+_ = s:auto_increment{'555', 5.55, -555, false, box.NULL}
+_ = s:auto_increment{box.NULL, 6.66, -666, true, '666'}
+_ = s:auto_increment{'777', box.NULL, -777, false, 777}
+_ = s:auto_increment{'888', 8.88, box.NULL, true, 8.88}
+_ = s:auto_increment{'999', 9.99, -999, box.NULL, false}
+_ = s:auto_increment{'000', 0.00, -000, true, box.NULL}
+
+s.index.i1:select()
+s.index.i2:select()
+s.index.i3:select()
+s.index.i4:select()
+s.index.i5:select()
+
+s:drop()