diff --git a/src/backend/utils/adt/bool.c b/src/backend/utils/adt/bool.c
index 340607f..6e7368d 100644
--- a/src/backend/utils/adt/bool.c
+++ b/src/backend/utils/adt/bool.c
@@ -39,7 +39,7 @@ parse_bool_with_len(const char *value, size_t len, bool *result)
 	{
 		case 't':
 		case 'T':
-			if (pg_strncasecmp(value, "true", len) == 0)
+			if (len == 1 || (len == 4 && pg_strncasecmp(value, "true", len) == 0))
 			{
 				if (result)
 					*result = true;
@@ -48,7 +48,7 @@ parse_bool_with_len(const char *value, size_t len, bool *result)
 			break;
 		case 'f':
 		case 'F':
-			if (pg_strncasecmp(value, "false", len) == 0)
+			if (len == 1 || (len == 5 && pg_strncasecmp(value, "false", len) == 0))
 			{
 				if (result)
 					*result = false;
@@ -57,7 +57,7 @@ parse_bool_with_len(const char *value, size_t len, bool *result)
 			break;
 		case 'y':
 		case 'Y':
-			if (pg_strncasecmp(value, "yes", len) == 0)
+			if (len == 1 || (len == 3 && pg_strncasecmp(value, "yes", len) == 0))
 			{
 				if (result)
 					*result = true;
