Tom Lane wrote:
However, all the values are hardcoded, so nothing in it should relate to settings that come from configure, I believe. These should be dealt with in src/tools/msvc/Solution.pm (mostly in GenerateFiles() ).

FYI, I'm about to commit changes moving XLOG_BLCKSZ and XLOG_SEG_SIZE
into the domain of configurable stuff, too.

                        

This patch should fix things for both sets of changes. And it demonstrates pretty much what you need to do for config options for MSVC.

If there's no objection I will apply shortly.

cheers

andrew
Index: src/include/pg_config.h.win32
===================================================================
RCS file: /cvsroot/pgsql/src/include/pg_config.h.win32,v
retrieving revision 1.54
diff -c -r1.54 pg_config.h.win32
*** src/include/pg_config.h.win32	2 May 2008 03:41:46 -0000	1.54
--- src/include/pg_config.h.win32	2 May 2008 22:04:37 -0000
***************
*** 37,51 ****
  /* 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.
--- 37,42 ----
***************
*** 600,618 ****
     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
  
--- 591,596 ----
Index: src/tools/msvc/Solution.pm
===================================================================
RCS file: /cvsroot/pgsql/src/tools/msvc/Solution.pm,v
retrieving revision 1.40
diff -c -r1.40 Solution.pm
*** src/tools/msvc/Solution.pm	21 Apr 2008 18:37:28 -0000	1.40
--- src/tools/msvc/Solution.pm	2 May 2008 22:04:39 -0000
***************
*** 34,39 ****
--- 34,56 ----
              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,122 ****
          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});
          
          if ($self->{options}->{float4byval}) 
          {
--- 133,148 ----
          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 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}) 
          {
Index: src/tools/msvc/config.pl
===================================================================
RCS file: /cvsroot/pgsql/src/tools/msvc/config.pl,v
retrieving revision 1.12
diff -c -r1.12 config.pl
*** src/tools/msvc/config.pl	21 Apr 2008 10:01:32 -0000	1.12
--- src/tools/msvc/config.pl	2 May 2008 22:04:39 -0000
***************
*** 7,12 ****
--- 7,15 ----
      # 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
-- 
Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches

Reply via email to