diff --git a/src/box/sql/func.c b/src/box/sql/func.c
index d5ea0fe6a0ea7c584a38bf4abc930529956baa6b..12a4bee04eb1a12182899846818e99161e0cb2d7 100644
--- a/src/box/sql/func.c
+++ b/src/box/sql/func.c
@@ -458,6 +458,7 @@ lengthFunc(sql_context * context, int argc, sql_value ** argv)
 	case MP_BIN:
 	case MP_INT:
 	case MP_UINT:
+	case MP_BOOL:
 	case MP_DOUBLE:{
 			sql_result_uint(context, sql_value_bytes(argv[0]));
 			break;
diff --git a/test/sql/boolean.result b/test/sql/boolean.result
index 352649136d37a71d6d6a59c8d66a4d8126e35854..ac9f7fcaf63316764159ced346b0912408c6737b 100644
--- a/test/sql/boolean.result
+++ b/test/sql/boolean.result
@@ -311,14 +311,15 @@ SELECT quote(a) FROM t0;
  |   - ['NULL']
  |   - ['NULL']
  | ...
+-- gh-4462: LENGTH didn't take BOOLEAN arguments.
 SELECT length(a) FROM t0;
  | ---
  | - metadata:
  |   - name: length(a)
  |     type: integer
  |   rows:
- |   - [null]
- |   - [null]
+ |   - [5]
+ |   - [4]
  |   - [null]
  |   - [null]
  | ...
diff --git a/test/sql/boolean.test.sql b/test/sql/boolean.test.sql
index 9d71139fdd58d3f780b3fee1a242ff2fbacd16c0..68a05852fef0dd26b68f3d0abe828b85ea0ca0ba 100644
--- a/test/sql/boolean.test.sql
+++ b/test/sql/boolean.test.sql
@@ -82,6 +82,7 @@ SELECT abs(a) FROM t0;
 SELECT lower(a) FROM t0;
 SELECT upper(a) FROM t0;
 SELECT quote(a) FROM t0;
+-- gh-4462: LENGTH didn't take BOOLEAN arguments.
 SELECT length(a) FROM t0;
 SELECT typeof(a) FROM t0;