summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan2008-05-03 00:24:06 +0000
committerAndrew Dunstan2008-05-03 00:24:06 +0000
commit5508aa49cdac73601a10b16eadb4c9df15c9f62c (patch)
tree1d1623f5f0913dcb70bcaf544e8aa63569eb9839
parentd487c250a3c6906cc65c35ce26679fd4e476160a (diff)
Provide for MSVC config equivalents of recently added configure options. Remove
any hardcoding of those options. Along the way, reorder the expression used to calculate RELSEG_SIZE to make it slightly clearer. For now wal_segsize is only allowed to have a value of 1 on Windows - we can relax that when we get full large file support in the backend.
-rwxr-xr-xconfigure3
-rw-r--r--configure.in3
-rw-r--r--src/include/pg_config.h.win3222
-rw-r--r--src/tools/msvc/Solution.pm28
-rw-r--r--src/tools/msvc/config.pl3
5 files changed, 34 insertions, 25 deletions
diff --git a/configure b/configure
index bb7145e5d7..f71fcd642d 100755
--- a/configure
+++ b/configure
@@ -2638,7 +2638,8 @@ fi
# this expression is set up to avoid unnecessary integer overflow
-RELSEG_SIZE=`expr '(' 1024 '*' ${segsize} / ${blocksize} ')' '*' 1024`
+# blocksize is already guaranteed to be a factor of 1024
+RELSEG_SIZE=`expr '(' 1024 / ${blocksize} ')' '*' ${segsize} '*' 1024`
test $? -eq 0 || exit 1
{ echo "$as_me:$LINENO: result: ${segsize}GB" >&5
echo "${ECHO_T}${segsize}GB" >&6; }
diff --git a/configure.in b/configure.in
index 661ddeb6b1..73eccaf36f 100644
--- a/configure.in
+++ b/configure.in
@@ -257,7 +257,8 @@ PGAC_ARG_REQ(with, segsize, [ --with-segsize=SEGSIZE set table segment size in
[segsize=$withval],
[segsize=1])
# this expression is set up to avoid unnecessary integer overflow
-RELSEG_SIZE=`expr '(' 1024 '*' ${segsize} / ${blocksize} ')' '*' 1024`
+# blocksize is already guaranteed to be a factor of 1024
+RELSEG_SIZE=`expr '(' 1024 / ${blocksize} ')' '*' ${segsize} '*' 1024`
test $? -eq 0 || exit 1
AC_MSG_RESULT([${segsize}GB])
diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32
index 49892c24ec..1c7e3cd2d0 100644
--- a/src/include/pg_config.h.win32
+++ b/src/include/pg_config.h.win32
@@ -37,15 +37,6 @@
/* The alignment requirement of a `short'. */
#define ALIGNOF_SHORT 2
-/* Size of a disk block --- this also limits the size of a tuple. You can set
- it bigger if you need bigger tuples (although TOAST should reduce the need
- to have large tuples, since fields can be spread across multiple tuples).
- BLCKSZ must be a power of 2. The maximum possible value of BLCKSZ is
- currently 2^15 (32768). This is determined by the 15-bit widths of the
- lp_off and lp_len fields in ItemIdData (see include/storage/itemid.h).
- Changing BLCKSZ requires an initdb. */
-#define BLCKSZ 8192
-
/* Define to the default TCP port number on which the server listens and to
which clients will try to connect. This can be overridden at run-time, but
it's convenient if your clients have the right default compiled in.
@@ -600,19 +591,6 @@
your system. */
/* #undef PTHREAD_CREATE_JOINABLE */
-/* RELSEG_SIZE is the maximum number of blocks allowed in one disk file. Thus,
- the maximum size of a single file is RELSEG_SIZE * BLCKSZ; relations bigger
- than that are divided into multiple files. RELSEG_SIZE * BLCKSZ must be
- less than your OS' limit on file size. This is often 2 GB or 4GB in a
- 32-bit operating system, unless you have large file support enabled. By
- default, we make the limit 1 GB to avoid any possible integer-overflow
- problems within the OS. A limit smaller than necessary only means we divide
- a large relation into more chunks than necessary, so it seems best to err
- in the direction of a small limit. A power-of-2 value is recommended to
- save a few cycles in md.c, but is not absolutely required. Changing
- RELSEG_SIZE requires an initdb. */
-#define RELSEG_SIZE 131072
-
/* The size of a `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index e656cff0a5..add0bc2856 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -34,6 +34,23 @@ sub new
die "XML requires both XSLT and ICONV\n";
}
}
+ $options->{blocksize} = 8
+ unless $options->{blocksize}; # undef or 0 means default
+ die "Bad blocksize $options->{blocksize}"
+ unless grep {$_ == $options->{blocksize}} (1,2,4,8,16,32);
+ $options->{segsize} = 1
+ unless $options->{segsize}; # undef or 0 means default
+ # only allow segsize 1 for now, as we can't do large files yet in windows
+ die "Bad segsize $options->{segsize}"
+ unless $options->{segsize} == 1;
+ $options->{wal_blocksize} = 8
+ unless $options->{wal_blocksize}; # undef or 0 means default
+ die "Bad wal_blocksize $options->{wal_blocksize}"
+ unless grep {$_ == $options->{wal_blocksize}} (1,2,4,8,16,32,64);
+ $options->{wal_segsize} = 16
+ unless $options->{wal_segsize}; # undef or 0 means default
+ die "Bad wal_segsize $options->{wal_segsize}"
+ unless grep {$_ == $options->{wal_segsize}} (1,2,4,8,16,32,64);
return $self;
}
@@ -116,7 +133,16 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
print O "#define USE_LDAP 1\n" if ($self->{options}->{ldap});
print O "#define HAVE_LIBZ 1\n" if ($self->{options}->{zlib});
print O "#define USE_SSL 1\n" if ($self->{options}->{openssl});
- print O "#define ENABLE_NLS 1\n" if ($self->{options}->{nls});
+ print O "#define ENABLE_NLS 1\n" if ($self->{options}->{nls});
+
+ print O "#define BLCKSZ ",1024 * $self->{options}->{blocksize},"\n";
+ print O "#define RELSEG_SIZE ",
+ (1024 / $self->{options}->{blocksize}) *
+ $self->{options}->{segsize} * 1024, "\n";
+ print O "#define XLOG_BLCKSZ ",
+ 1024 * $self->{options}->{wal_blocksize},"\n";
+ print O "#define XLOG_SEG_SIZE (",
+ $self->{options}->{wal_segsize}," * 1024 * 1024)\n";
if ($self->{options}->{float4byval})
{
diff --git a/src/tools/msvc/config.pl b/src/tools/msvc/config.pl
index bebb9a7c49..1e3750535d 100644
--- a/src/tools/msvc/config.pl
+++ b/src/tools/msvc/config.pl
@@ -7,6 +7,9 @@ our $config = {
# integer_datetimes=>1, # --enable-integer-datetimes - on is now default
# float4byval=>1, # --disable-float4-byval, on by default
# float8byval=>0, # --disable-float8-byval, off by default
+ # blocksize => 8, # --with-blocksize, 8kB by default
+ # wal_blocksize => 8, # --with-wal-blocksize, 8kb by default
+ # wal_segsize => 16, # --with-wal-segsize, 16MB by default
nls=>undef, # --enable-nls=<path>
tcl=>'c:\tcl', # --with-tls=<path>
perl=>'c:\perl', # --with-perl