diff --git a/config/programs.m4 b/config/programs.m4
index 490ec9fe9f5..7b55c2664a6 100644
--- a/config/programs.m4
+++ b/config/programs.m4
@@ -59,57 +59,16 @@ AC_SUBST(BISONFLAGS)
# PGAC_PATH_FLEX
# --------------
# Look for Flex, set the output variable FLEX to its path if found.
-# Reject versions before 2.5.35 (the earliest version in the buildfarm
-# as of 2022). Also find Flex if its installed under `lex', but do not
-# accept other Lex programs.
AC_DEFUN([PGAC_PATH_FLEX],
-[AC_CACHE_CHECK([for flex], pgac_cv_path_flex,
-[# Let the user override the test
-if test -n "$FLEX"; then
- pgac_cv_path_flex=$FLEX
-else
- pgac_save_IFS=$IFS
- IFS=$PATH_SEPARATOR
- for pgac_dir in $PATH; do
- IFS=$pgac_save_IFS
- if test -z "$pgac_dir" || test x"$pgac_dir" = x"."; then
- pgac_dir=`pwd`
- fi
- for pgac_prog in flex lex; do
- pgac_candidate="$pgac_dir/$pgac_prog"
- if test -f "$pgac_candidate" \
- && $pgac_candidate --version /dev/null 2>&1
- then
- echo '%%' > conftest.l
- if $pgac_candidate -t conftest.l 2>/dev/null | grep FLEX_SCANNER >/dev/null 2>&1; then
- pgac_flex_version=`$pgac_candidate --version 2>/dev/null`
- if echo "$pgac_flex_version" | sed ['s/[.a-z]/ /g'] | $AWK '{ if ([$]1 == 2 && ([$]2 > 5 || ([$]2 == 5 && [$]3 >= 35))) exit 0; else exit 1;}'
- then
- pgac_cv_path_flex=$pgac_candidate
- break 2
- else
- AC_MSG_ERROR([
-*** The installed version of Flex, $pgac_candidate, is too old to use with PostgreSQL.
-*** Flex version 2.5.35 or later is required, but this is $pgac_flex_version.])
- fi
- fi
- fi
- done
- done
- rm -f conftest.l lex.yy.c
- : ${pgac_cv_path_flex=no}
-fi
-])[]dnl AC_CACHE_CHECK
-
-if test x"$pgac_cv_path_flex" = x"no"; then
+[PGAC_PATH_PROGS(FLEX, flex)
+if test -z "$FLEX"; then
AC_MSG_ERROR([flex not found])
-else
- FLEX=$pgac_cv_path_flex
- pgac_flex_version=`$FLEX --version 2>/dev/null`
- AC_MSG_NOTICE([using $pgac_flex_version])
fi
+pgac_flex_version=`$FLEX --version 2>/dev/null`
+AC_MSG_NOTICE([using $pgac_flex_version])
+
AC_SUBST(FLEX)
AC_SUBST(FLEXFLAGS)
])# PGAC_PATH_FLEX
diff --git a/configure b/configure
index a0b5e10ca39..ceeef9b0915 100755
--- a/configure
+++ b/configure
@@ -9931,59 +9931,68 @@ if test -z "$BISON"; then
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flex" >&5
-$as_echo_n "checking for flex... " >&6; }
-if ${pgac_cv_path_flex+:} false; then :
+if test -z "$FLEX"; then
+ for ac_prog in flex
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FLEX+:} false; then :
$as_echo_n "(cached) " >&6
else
- # Let the user override the test
-if test -n "$FLEX"; then
- pgac_cv_path_flex=$FLEX
-else
- pgac_save_IFS=$IFS
- IFS=$PATH_SEPARATOR
- for pgac_dir in $PATH; do
- IFS=$pgac_save_IFS
- if test -z "$pgac_dir" || test x"$pgac_dir" = x"."; then
- pgac_dir=`pwd`
- fi
- for pgac_prog in flex lex; do
- pgac_candidate="$pgac_dir/$pgac_prog"
- if test -f "$pgac_candidate" \
- && $pgac_candidate --version /dev/null 2>&1
- then
- echo '%%' > conftest.l
- if $pgac_candidate -t conftest.l 2>/dev/null | grep FLEX_SCANNER >/dev/null 2>&1; then
- pgac_flex_version=`$pgac_candidate --version 2>/dev/null`
- if echo "$pgac_flex_version" | sed 's/[.a-z]/ /g' | $AWK '{ if ($1 == 2 && ($2 > 5 || ($2 == 5 && $3 >= 35))) exit 0; else exit 1;}'
- then
- pgac_cv_path_flex=$pgac_candidate
- break 2
- else
- as_fn_error $? "
-*** The installed version of Flex, $pgac_candidate, is too old to use with PostgreSQL.
-*** Flex version 2.5.35 or later is required, but this is $pgac_flex_version." "$LINENO" 5
- fi
- fi
- fi
- done
+ case $FLEX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_FLEX="$FLEX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_FLEX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
done
- rm -f conftest.l lex.yy.c
- : ${pgac_cv_path_flex=no}
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+FLEX=$ac_cv_path_FLEX
+if test -n "$FLEX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX" >&5
+$as_echo "$FLEX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_path_flex" >&5
-$as_echo "$pgac_cv_path_flex" >&6; }
-if test x"$pgac_cv_path_flex" = x"no"; then
- as_fn_error $? "flex not found" "$LINENO" 5
+
+ test -n "$FLEX" && break
+done
+
else
- FLEX=$pgac_cv_path_flex
- pgac_flex_version=`$FLEX --version 2>/dev/null`
- { $as_echo "$as_me:${as_lineno-$LINENO}: using $pgac_flex_version" >&5
-$as_echo "$as_me: using $pgac_flex_version" >&6;}
+ # Report the value of FLEX in configure's output in all cases.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FLEX" >&5
+$as_echo_n "checking for FLEX... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX" >&5
+$as_echo "$FLEX" >&6; }
fi
+if test -z "$FLEX"; then
+ as_fn_error $? "flex not found" "$LINENO" 5
+fi
+
+pgac_flex_version=`$FLEX --version 2>/dev/null`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: using $pgac_flex_version" >&5
+$as_echo "$as_me: using $pgac_flex_version" >&6;}
+
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index ebdb5b3bc2d..271615e4a65 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -100,10 +100,10 @@
yacc
- Flex 2.5.35 or later and
- Bison 2.3 or later are required. Other
- lex and yacc
- programs cannot be used.
+ Flex and Bison are
+ required. Other lex and
+ yacc programs cannot be used.
+ Bison needs to be at least version 2.3.
@@ -3811,10 +3811,8 @@ make: *** [postgres] Error 1
Flex
- Bison and Flex are
- required. Only Bison versions 2.3 and later
- will work. Flex must be version 2.5.35 or later.
- Binaries can be downloaded from Bison and
+ Flex can be downloaded from .
diff --git a/meson.build b/meson.build
index cfd654d2916..32fc89f3a4b 100644
--- a/meson.build
+++ b/meson.build
@@ -334,7 +334,7 @@ endif
# External programs
perl = find_program(get_option('PERL'), required: true, native: true)
python = find_program(get_option('PYTHON'), required: true, native: true)
-flex = find_program(get_option('FLEX'), native: true, version: '>= 2.5.35')
+flex = find_program(get_option('FLEX'), native: true)
bison = find_program(get_option('BISON'), native: true, version: '>= 2.3')
sed = find_program(get_option('SED'), 'sed', native: true, required: false)
prove = find_program(get_option('PROVE'), native: true, required: false)
diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l
index c0ecb8b2ce2..11a1e2a3f9f 100644
--- a/src/backend/utils/misc/guc-file.l
+++ b/src/backend/utils/misc/guc-file.l
@@ -302,7 +302,7 @@ record_config_file_error(const char *errmsg,
/*
* Flex fatal errors bring us here. Stash the error message and jump back to
* ParseConfigFp(). Assume all msg arguments point to string constants; this
- * holds for flex 2.5.35 (earliest we support). Otherwise, we would need to
+ * holds for all currently known flex versions. Otherwise, we would need to
* copy the message.
*
* We return "int" since this takes the place of calls to fprintf().