diff --git a/src/box/sql/func.c b/src/box/sql/func.c
index e1c9a722f718e9babde56690877c174dc1ceb8f2..ad6eb0586ab6bbc79afa06fd1c80722d5a55d2f8 100644
--- a/src/box/sql/func.c
+++ b/src/box/sql/func.c
@@ -1467,12 +1467,6 @@ trim_func_three_args(struct sql_context *context, int argc, sql_value **argv)
 		       char_cnt, input_str, input_str_sz);
 	sql_free(char_len);
 }
-
-/* IMP: R-25361-16150 This function is omitted from sql by default. It
- * is only available if the SQL_SOUNDEX compile-time option is used
- * when sql is built.
- */
-#ifdef SQL_SOUNDEX
 /*
  * Compute the soundex encoding of a word.
  *
@@ -1482,6 +1476,7 @@ trim_func_three_args(struct sql_context *context, int argc, sql_value **argv)
 static void
 soundexFunc(sql_context * context, int argc, sql_value ** argv)
 {
+	(void) argc;
 	char zResult[8];
 	const u8 *zIn;
 	int i, j;
@@ -1527,7 +1522,6 @@ soundexFunc(sql_context * context, int argc, sql_value ** argv)
 		sql_result_text(context, "?000", 4, SQL_STATIC);
 	}
 }
-#endif				/* SQL_SOUNDEX */
 
 /*
  * An instance of the following structure holds the context of a
@@ -1841,9 +1835,7 @@ sqlRegisterBuiltinFunctions(void)
 	 * For peak efficiency, put the most frequently used function last.
 	 */
 	static FuncDef aBuiltinFunc[] = {
-#ifdef SQL_SOUNDEX
-		FUNCTION(soundex, 1, 0, 0, soundexFunc),
-#endif
+		FUNCTION(soundex, 1, 0, 0, soundexFunc, FIELD_TYPE_STRING),
 		FUNCTION2(unlikely, 1, 0, 0, noopFunc, SQL_FUNC_UNLIKELY,
 			  FIELD_TYPE_BOOLEAN),
 		FUNCTION2(likelihood, 2, 0, 0, noopFunc, SQL_FUNC_UNLIKELY,
diff --git a/test/sql-tap/func.test.lua b/test/sql-tap/func.test.lua
index d6bf1bb981106868790f66b99bde913c49aea0ea..2770ec29559c7f349ae715eb08ed1e32f426b352 100755
--- a/test/sql-tap/func.test.lua
+++ b/test/sql-tap/func.test.lua
@@ -1,6 +1,6 @@
 #!/usr/bin/env tarantool
 test = require("sqltester")
-test:plan(14586)
+test:plan(14602)
 
 --!./tcltestrunner.lua
 -- 2001 September 15
@@ -1133,7 +1133,7 @@ end
 -- } [sql -version]
 -- Test that destructors passed to sql by calls to sql_result_text()
 -- etc. are called. These tests use two special user-defined functions
--- (implemented in func.c) only available in test builds. 
+-- (implemented in func.c) only available in test builds.
 --
 -- Function test_destructor() takes one argument and returns a copy of the
 -- text form of that argument. A destructor is associated with the return
@@ -1227,7 +1227,7 @@ test:do_execsql_test(
         DROP TABLE t4;
     ]], {
         -- <func-12.7>
-        
+
         -- </func-12.7>
     })
 
@@ -1252,7 +1252,7 @@ test:do_execsql_test(
         INSERT INTO t4 VALUES(2, 'ghi', 'jkl');
     ]], {
         -- <func-13.2>
-        
+
         -- </func-13.2>
     })
 
@@ -1648,7 +1648,7 @@ test:do_catchsql_test(
 test:do_catchsql_test(
     "func-18.15",
     [[
-        SELECT sum(x) FROM 
+        SELECT sum(x) FROM
            (SELECT 9223372036854775807 AS x UNION ALL
             SELECT 10 AS x);
     ]], {
@@ -1660,7 +1660,7 @@ test:do_catchsql_test(
 test:do_catchsql_test(
     "func-18.18",
     [[
-        SELECT sum(x) FROM 
+        SELECT sum(x) FROM
            (SELECT -9223372036854775807 AS x UNION ALL
             SELECT -10 AS x);
     ]], {
@@ -1737,33 +1737,30 @@ test:do_catchsql_test(
 -- Soundex tests.
 --
 -- false condition for current tarantool version
-if pcall( function() test:execsql("SELECT soundex('hello')") end ) then
-    for i, val in ipairs({
-        {"euler", "E460"},
-        {"EULER", "E460"},    
-        {"Euler", "E460"},    
-        {"ellery", "E460"},    
-        {"gauss", "G200"},    
-        {"ghosh", "G200"},    
-        {"hilbert", "H416"},    
-        {"Heilbronn", "H416"},    
-        {"knuth", "K530"},    
-        {"kant", "K530"},    
-        {"Lloyd", "L300"},    
-        {"LADD", "L300"},    
-        {"Lukasiewicz", "L222"},    
-        {"Lissajous", "L222"},    
-        {"A", "A000"},    
-        {"12345", "?000"} }) do
-        local name = val[1]
-        local sdx = val[2]
-        test:do_execsql_test(
-            "func-20."..i,
-            string.format("SELECT soundex('%s')", name), {
-                sdx
-            })
-
-    end
+for i, val in ipairs({
+    {"euler", "E460"},
+    {"EULER", "E460"},
+    {"Euler", "E460"},
+    {"ellery", "E460"},
+    {"gauss", "G200"},
+    {"ghosh", "G200"},
+    {"hilbert", "H416"},
+    {"Heilbronn", "H416"},
+    {"knuth", "K530"},
+    {"kant", "K530"},
+    {"Lloyd", "L300"},
+    {"LADD", "L300"},
+    {"Lukasiewicz", "L222"},
+    {"Lissajous", "L222"},
+    {"A", "A000"},
+    {"12345", "?000"} }) do
+    local name = val[1]
+    local sdx = val[2]
+    test:do_execsql_test(
+        "func-20."..i,
+        string.format("SELECT soundex('%s')", name), {
+            sdx
+        })
 end
 -- Tests of the REPLACE function.
 --
@@ -1850,8 +1847,8 @@ test:do_execsql_test(
 test:do_test(
     "func-21.9",
     function()
-        -- Attempt to exploit a buffer-overflow that at one time existed 
-        -- in the REPLACE function. 
+        -- Attempt to exploit a buffer-overflow that at one time existed
+        -- in the REPLACE function.
         local str = string.format("%sCC%s", string.rep("A", 29998), string.rep("A", 35537))
         local rep = string.rep("B", 65536)
         return test:execsql(string.format([[
@@ -2430,7 +2427,7 @@ test:do_test(
         return X(1236, "X!cmd", [=[["abuse_create_function","db"]]=])
     end, {
         -- <func-26.1>
-        
+
         -- </func-26.1>
     })
 
@@ -2633,7 +2630,7 @@ end
 test:do_execsql_test(
     "func-31.1",
     [[
-        SELECT char(), length(char()), typeof(char()) 
+        SELECT char(), length(char()), typeof(char())
     ]], {
         -- <func-31.1>
         "", 0, "string"