aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure7
-rw-r--r--configure.ac7
-rw-r--r--doc/src/sgml/install-windows.sgml8
-rw-r--r--src/backend/main/main.c5
-rw-r--r--src/backend/optimizer/path/costsize.c4
-rw-r--r--src/backend/utils/adt/float.c6
-rw-r--r--src/backend/utils/adt/pg_locale.c40
-rw-r--r--src/include/port/win32_port.h7
-rw-r--r--src/port/chklocale.c33
-rw-r--r--src/port/strtof.c9
-rw-r--r--src/tools/msvc/MSBuildProject.pm27
-rw-r--r--src/tools/msvc/README8
-rw-r--r--src/tools/msvc/Solution.pm28
-rw-r--r--src/tools/msvc/VSObjectFactory.pm12
14 files changed, 24 insertions, 177 deletions
diff --git a/configure b/configure
index a90be038210..1e63c6862bc 100755
--- a/configure
+++ b/configure
@@ -16809,10 +16809,9 @@ fi
if test "$PORTNAME" = "win32" -o "$PORTNAME" = "cygwin"; then
# Cygwin and (apparently, based on test results) Mingw both
- # have a broken strtof(), so substitute the same replacement
- # code we use with VS2013. That's not a perfect fix, since
- # (unlike with VS2013) it doesn't avoid double-rounding, but
- # we have no better options. To get that, though, we have to
+ # have a broken strtof(), so substitute its implementation.
+ # That's not a perfect fix, since it doesn't avoid double-rounding,
+ # but we have no better options. To get that, though, we have to
# force the file to be compiled despite HAVE_STRTOF.
case " $LIBOBJS " in
*" strtof.$ac_objext "* ) ;;
diff --git a/configure.ac b/configure.ac
index 7fbfb6795fe..71191f14ad7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1919,10 +1919,9 @@ fi
if test "$PORTNAME" = "win32" -o "$PORTNAME" = "cygwin"; then
# Cygwin and (apparently, based on test results) Mingw both
- # have a broken strtof(), so substitute the same replacement
- # code we use with VS2013. That's not a perfect fix, since
- # (unlike with VS2013) it doesn't avoid double-rounding, but
- # we have no better options. To get that, though, we have to
+ # have a broken strtof(), so substitute its implementation.
+ # That's not a perfect fix, since it doesn't avoid double-rounding,
+ # but we have no better options. To get that, though, we have to
# force the file to be compiled despite HAVE_STRTOF.
AC_LIBOBJ([strtof])
AC_MSG_NOTICE([On $host_os we will use our strtof wrapper.])
diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml
index 66567d17a04..afb004b5cf0 100644
--- a/doc/src/sgml/install-windows.sgml
+++ b/doc/src/sgml/install-windows.sgml
@@ -22,7 +22,7 @@
<productname>Windows</productname>. The simplest way to build with
Microsoft tools is to install <productname>Visual Studio 2022</productname>
and use the included compiler. It is also possible to build with the full
- <productname>Microsoft Visual C++ 2013 to 2022</productname>.
+ <productname>Microsoft Visual C++ 2015 to 2022</productname>.
In some cases that requires the installation of the
<productname>Windows SDK</productname> in addition to the compiler.
</para>
@@ -77,15 +77,13 @@
<para>
Both 32-bit and 64-bit builds are possible with the Microsoft Compiler suite.
32-bit PostgreSQL builds are possible with
- <productname>Visual Studio 2013</productname> to
+ <productname>Visual Studio 2015</productname> to
<productname>Visual Studio 2022</productname>,
as well as standalone Windows SDK releases 8.1a to 10.
64-bit PostgreSQL builds are supported with
<productname>Microsoft Windows SDK</productname> version 8.1a to 10 or
- <productname>Visual Studio 2013</productname> and above.
+ <productname>Visual Studio 2015</productname> and above.
<!--
- For 2013 requirements:
- https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2013-sysrequirements-vs
For 2015 requirements:
https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2015-sysrequirements-vs
For 2017 requirements:
diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index dd82722ee31..bb782fa1ec6 100644
--- a/src/backend/main/main.c
+++ b/src/backend/main/main.c
@@ -30,11 +30,6 @@
#include <sys/param.h>
#endif
-#if defined(_M_AMD64) && _MSC_VER == 1800
-#include <math.h>
-#include <versionhelpers.h>
-#endif
-
#include "bootstrap/bootstrap.h"
#include "common/username.h"
#include "port/atomics.h"
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index fcc26b01a4f..5e5732f6e12 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -5445,10 +5445,8 @@ calc_joinrel_size_estimate(PlannerInfo *root,
double outer_rows,
double inner_rows,
SpecialJoinInfo *sjinfo,
- List *restrictlist_in)
+ List *restrictlist)
{
- /* This apparently-useless variable dodges a compiler bug in VS2013: */
- List *restrictlist = restrictlist_in;
JoinType jointype = sjinfo->jointype;
Selectivity fkselec;
Selectivity jselec;
diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c
index 63bb0f22772..fc8f39a7a98 100644
--- a/src/backend/utils/adt/float.c
+++ b/src/backend/utils/adt/float.c
@@ -249,13 +249,9 @@ float4in(PG_FUNCTION_ARGS)
* precision). We'd prefer not to throw error for that, so try to
* detect whether it's a "real" out-of-range condition by checking
* to see if the result is zero or huge.
- *
- * Use isinf() rather than HUGE_VALF on VS2013 because it
- * generates a spurious overflow warning for -HUGE_VALF. Also use
- * isinf() if HUGE_VALF is missing.
*/
if (val == 0.0 ||
-#if !defined(HUGE_VALF) || (defined(_MSC_VER) && (_MSC_VER < 1900))
+#if !defined(HUGE_VALF)
isinf(val)
#else
(val >= HUGE_VALF || val <= -HUGE_VALF)
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index 5cf5dd5f87d..607a4b73407 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -950,7 +950,6 @@ cache_locale_time(void)
* [2] https://docs.microsoft.com/en-us/windows/win32/intl/locale-names
*/
-#if _MSC_VER >= 1900
/*
* Callback function for EnumSystemLocalesEx() in get_iso_localename().
*
@@ -1100,7 +1099,6 @@ get_iso_localename(const char *winlocname)
return NULL;
}
-#endif /* _MSC_VER >= 1900 */
static char *
IsoLocaleName(const char *winlocname)
@@ -1115,46 +1113,8 @@ IsoLocaleName(const char *winlocname)
return iso_lc_messages;
}
else
- {
-#if (_MSC_VER >= 1900) /* Visual Studio 2015 or later */
return get_iso_localename(winlocname);
-#else
- _locale_t loct;
-
- loct = _create_locale(LC_CTYPE, winlocname);
- if (loct != NULL)
- {
- size_t rc;
- char *hyphen;
-
- /* Locale names use only ASCII, any conversion locale suffices. */
- rc = wchar2char(iso_lc_messages, loct->locinfo->locale_name[LC_CTYPE],
- sizeof(iso_lc_messages), NULL);
- _free_locale(loct);
- if (rc == -1 || rc == sizeof(iso_lc_messages))
- return NULL;
- /*
- * Since the message catalogs sit on a case-insensitive
- * filesystem, we need not standardize letter case here. So long
- * as we do not ship message catalogs for which it would matter,
- * we also need not translate the script/variant portion, e.g.
- * uz-Cyrl-UZ to uz_UZ@cyrillic. Simply replace the hyphen with
- * an underscore.
- *
- * Note that the locale name can be less-specific than the value
- * we would derive under earlier Visual Studio releases. For
- * example, French_France.1252 yields just "fr". This does not
- * affect any of the country-specific message catalogs available
- * as of this writing (pt_BR, zh_CN, zh_TW).
- */
- hyphen = strchr(iso_lc_messages, '-');
- if (hyphen)
- *hyphen = '_';
- return iso_lc_messages;
- }
-#endif /* Visual Studio 2015 or later */
- }
#endif /* defined(_MSC_VER) */
return NULL; /* Not supported on this version of msvc/mingw */
}
diff --git a/src/include/port/win32_port.h b/src/include/port/win32_port.h
index dbbf88f8e8c..5121c0c626e 100644
--- a/src/include/port/win32_port.h
+++ b/src/include/port/win32_port.h
@@ -531,13 +531,8 @@ typedef unsigned short mode_t;
#endif /* _MSC_VER */
-#if (defined(_MSC_VER) && (_MSC_VER < 1900)) || \
- defined(__MINGW32__) || defined(__MINGW64__)
+#if defined(__MINGW32__) || defined(__MINGW64__)
/*
- * VS2013 has a strtof() that seems to give correct answers for valid input,
- * even on the rounding edge cases, but which doesn't handle out-of-range
- * input correctly. Work around that.
- *
* Mingw claims to have a strtof, and my reading of its source code suggests
* that it ought to work (and not need this hack), but the regression test
* results disagree with me; whether this is a version issue or not is not
diff --git a/src/port/chklocale.c b/src/port/chklocale.c
index c85d8da3c8b..2aaf2ae8c04 100644
--- a/src/port/chklocale.c
+++ b/src/port/chklocale.c
@@ -191,19 +191,10 @@ static const struct encoding_match encoding_match_list[] = {
/*
* On Windows, use CP<code page number> instead of the nl_langinfo() result
*
- * Visual Studio 2012 expanded the set of valid LC_CTYPE values, so have its
- * locale machinery determine the code page. See comments at IsoLocaleName().
- * For other compilers, follow the locale's predictable format.
- *
- * Visual Studio 2015 should still be able to do the same, but the declaration
- * of lc_codepage is missing in _locale_t, causing this code compilation to
- * fail, hence this falls back instead on GetLocaleInfoEx. VS 2015 may be an
- * exception and post-VS2015 versions should be able to handle properly the
- * codepage number using _create_locale(). So, instead of the same logic as
- * VS 2012 and VS 2013, this routine uses GetLocaleInfoEx to parse short
- * locale names like "de-DE", "fr-FR", etc. If those cannot be parsed correctly
- * process falls back to the pre-VS-2010 manual parsing done with
- * using <Language>_<Country>.<CodePage> as a base.
+ * This routine uses GetLocaleInfoEx() to parse short locale names like
+ * "de-DE", "fr-FR", etc. If those cannot be parsed correctly process falls
+ * back to the pre-VS-2010 manual parsing done with using
+ * <Language>_<Country>.<CodePage> as a base.
*
* Returns a malloc()'d string for the caller to free.
*/
@@ -211,22 +202,9 @@ static char *
win32_langinfo(const char *ctype)
{
char *r = NULL;
-
-#if defined(_MSC_VER) && (_MSC_VER < 1900)
- _locale_t loct = NULL;
-
- loct = _create_locale(LC_CTYPE, ctype);
- if (loct != NULL)
- {
- r = malloc(16); /* excess */
- if (r != NULL)
- sprintf(r, "CP%u", loct->locinfo->lc_codepage);
- _free_locale(loct);
- }
-#else
char *codepage;
-#if defined(_MSC_VER) && (_MSC_VER >= 1900)
+#if defined(_MSC_VER)
uint32 cp;
WCHAR wctype[LOCALE_NAME_MAX_LENGTH];
@@ -279,7 +257,6 @@ win32_langinfo(const char *ctype)
}
}
}
-#endif
return r;
}
diff --git a/src/port/strtof.c b/src/port/strtof.c
index 7da05be687b..314fcc9851f 100644
--- a/src/port/strtof.c
+++ b/src/port/strtof.c
@@ -54,15 +54,6 @@ strtof(const char *nptr, char **endptr)
#elif HAVE_BUGGY_STRTOF
/*
- * On Windows, there's a slightly different problem: VS2013 has a strtof()
- * that returns the correct results for valid input, but may fail to report an
- * error for underflow or overflow, returning 0 instead. Work around that by
- * trying strtod() when strtof() returns 0.0 or [+-]Inf, and calling it an
- * error if the result differs. Also, strtof() doesn't handle subnormal input
- * well, so prefer to round the strtod() result in such cases. (Normally we'd
- * just say "too bad" if strtof() doesn't support subnormals, but since we're
- * already in here fixing stuff, we might as well do the best fix we can.)
- *
* Cygwin has a strtof() which is literally just (float)strtod(), which means
* we can't avoid the double-rounding problem; but using this wrapper does get
* us proper over/underflow checks. (Also, if they fix their strtof(), the
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm
index f24d9e53482..62acdda3a19 100644
--- a/src/tools/msvc/MSBuildProject.pm
+++ b/src/tools/msvc/MSBuildProject.pm
@@ -4,7 +4,7 @@
package MSBuildProject;
#
-# Package that encapsulates a MSBuild project file (Visual C++ 2013 or greater)
+# Package that encapsulates a MSBuild project file (Visual C++ 2015 or greater)
#
# src/tools/msvc/MSBuildProject.pm
#
@@ -405,31 +405,6 @@ EOF
return;
}
-package VC2013Project;
-
-#
-# Package that encapsulates a Visual C++ 2013 project file
-#
-
-use strict;
-use warnings;
-use base qw(MSBuildProject);
-
-no warnings qw(redefine); ## no critic
-
-sub new
-{
- my $classname = shift;
- my $self = $classname->SUPER::_new(@_);
- bless($self, $classname);
-
- $self->{vcver} = '12.00';
- $self->{PlatformToolset} = 'v120';
- $self->{ToolsVersion} = '12.0';
-
- return $self;
-}
-
package VC2015Project;
#
diff --git a/src/tools/msvc/README b/src/tools/msvc/README
index 473d6f425b2..1c36925258e 100644
--- a/src/tools/msvc/README
+++ b/src/tools/msvc/README
@@ -4,7 +4,7 @@ MSVC build
==========
This directory contains the tools required to build PostgreSQL using
-Microsoft Visual Studio 2013 - 2022. This builds the whole backend, not just
+Microsoft Visual Studio 2015 - 2022. This builds the whole backend, not just
the libpq frontend library. For more information, see the documentation
chapter "Installation on Windows" and the description below.
@@ -67,7 +67,7 @@ Install.pm module containing the install logic
Mkvcbuild.pm module containing the code to generate the Visual
Studio build (project/solution) files
MSBuildProject.pm module containing the code to generate MSBuild based
- project files (Visual Studio 2013 or greater)
+ project files (Visual Studio 2015 or greater)
Project.pm module containing the common code to generate the
Visual Studio project files. Also provides the
common interface of all project file generators
@@ -88,10 +88,10 @@ config_default.pl to create the configuration arguments.
These configuration arguments are passed over to Mkvcbuild::mkvcbuild
(Mkvcbuild.pm) which creates the Visual Studio project and solution files.
It does this by using VSObjectFactory::CreateSolution to create an object
-implementing the Solution interface (this could be either VS2013Solution,
+implementing the Solution interface (this could be either
VS2015Solution, VS2017Solution, VS2019Solution or VS2022Solution, all in
Solution.pm, depending on the user's build environment) and adding objects
-implementing the corresponding Project interface (VC2013Project,
+implementing the corresponding Project interface (
VC2015Project, VC2017Project, VC2019Project or VC2022Project from
MSBuildProject.pm) to it. When Solution::Save is called, the implementations
of Solution and Project save their content in the appropriate format.
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index a9dd6045344..fa32dc371dc 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -1263,34 +1263,6 @@ sub GetFakeConfigure
return $cfg;
}
-package VS2013Solution;
-
-#
-# Package that encapsulates a Visual Studio 2013 solution file
-#
-
-use Carp;
-use strict;
-use warnings;
-use base qw(Solution);
-
-no warnings qw(redefine); ## no critic
-
-sub new
-{
- my $classname = shift;
- my $self = $classname->SUPER::_new(@_);
- bless($self, $classname);
-
- $self->{solutionFileVersion} = '12.00';
- $self->{vcver} = '12.00';
- $self->{visualStudioName} = 'Visual Studio 2013';
- $self->{VisualStudioVersion} = '12.0.21005.1';
- $self->{MinimumVisualStudioVersion} = '10.0.40219.1';
-
- return $self;
-}
-
package VS2015Solution;
#
diff --git a/src/tools/msvc/VSObjectFactory.pm b/src/tools/msvc/VSObjectFactory.pm
index 9f9712b7935..975ccf2ee56 100644
--- a/src/tools/msvc/VSObjectFactory.pm
+++ b/src/tools/msvc/VSObjectFactory.pm
@@ -33,11 +33,7 @@ sub CreateSolution
$visualStudioVersion = DetermineVisualStudioVersion();
}
- if ($visualStudioVersion eq '12.00')
- {
- return new VS2013Solution(@_);
- }
- elsif ($visualStudioVersion eq '14.00')
+ if ($visualStudioVersion eq '14.00')
{
return new VS2015Solution(@_);
}
@@ -87,11 +83,7 @@ sub CreateProject
$visualStudioVersion = DetermineVisualStudioVersion();
}
- if ($visualStudioVersion eq '12.00')
- {
- return new VC2013Project(@_);
- }
- elsif ($visualStudioVersion eq '14.00')
+ if ($visualStudioVersion eq '14.00')
{
return new VC2015Project(@_);
}