Re: [COMMITTERS] pgsql: Sigh ... - Mailing list pgsql-patches

From Andrew Dunstan
Subject Re: [COMMITTERS] pgsql: Sigh ...
Date
Msg-id 481B9335.5070407@dunslane.net
Whole thread Raw
Responses Re: [COMMITTERS] pgsql: Sigh ...  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: [COMMITTERS] pgsql: Sigh ...  (Peter Eisentraut <peter_e@gmx.net>)
List pgsql-patches

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

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: GUC parameter cursors_tuple_fraction
Next
From: Tom Lane
Date:
Subject: Re: [COMMITTERS] pgsql: Sigh ...