Subject: [Fwd: Re: regression failures on WIndows in machines with some non-English locales]

From: Andrew Dunstan <[email-masked]>
Date: Tue, 01 Nov 2005 07:43:15 -0500

This has refreshed my fading memory. The patch seems like the best 
solution. Is there any objection to applying it?

(Petr, I assume you intended to send this to a mailing list also)

cheers

andrew

-------- Original Message --------
Subject: 	Re: regression failures on WIndows in machines with some 
non-English locales
Date: 	Tue, 01 Nov 2005 07:55:59 +0100
From: 	Petr Jelinek <[email-masked]>
To: 	Tom Lane <[email-masked]>, Andrew Dunstan <[email-masked]>
References: 	<[email-masked]> <[email-masked]>

BTW Tom you should know it's not really failure it's just different 
sorting of output in rules test (due to "ch" being one letter in my locale).

When I suggested --no-locale for regression test I ment something like 
whats in attachement - this will not change current functionality just 
adds option to set NO_LOCALE=something in make check commandline which 
would enable me to setup buildfarm member (after patching buildfarm 
client, I think it should be option which is off by default there too).

I want this aproach because forcing --no-locale for everybody could mean 
  that we won't find some errors - good example of this is "force C 
locale for temp regression installations" thread 
(http://archives.postgresql.org/pgsql-patches/2005-08/msg00352.php) 
where we discussed it, you both might remmeber it.

-- 
Regards
Petr Jelinek (PJMODOS)

Index: GNUmakefile
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/GNUmakefile,v
retrieving revision 1.52
diff -c -r1.52 GNUmakefile
*** GNUmakefile	28 Jul 2005 04:32:32 -0000	1.52
--- GNUmakefile	1 Nov 2005 06:34:49 -0000
***************
*** 28,33 ****
--- 28,38 ----
  MAXCONNOPT += --max-connections=$(MAX_CONNECTIONS)
  endif
  
+ # locale
+ NOLOCALE :=
+ ifdef NO_LOCALE
+ NOLOCALE += --no-locale
+ endif
  
  ##
  ## Prepare for tests
***************
*** 132,148 ****
  check: all
  	-rm -rf ./testtablespace
  	mkdir ./testtablespace
! 	$(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT)
  
  installcheck: all
  	-rm -rf ./testtablespace
  	mkdir ./testtablespace
! 	$(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql 
  
  installcheck-parallel: all
  	-rm -rf ./testtablespace
  	mkdir ./testtablespace
! 	$(SHELL) ./pg_regress --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT)

  # old interfaces follow...
--- 137,153 ----
  check: all
  	-rm -rf ./testtablespace
  	mkdir ./testtablespace
! 	$(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
  
  installcheck: all
  	-rm -rf ./testtablespace
  	mkdir ./testtablespace
! 	$(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
  
  installcheck-parallel: all
  	-rm -rf ./testtablespace
  	mkdir ./testtablespace
! 	$(SHELL) ./pg_regress --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)

  # old interfaces follow...
***************
*** 152,161 ****
  runtest-parallel: installcheck-parallel
  
  bigtest:
! 	$(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql numeric_big
  
  bigcheck:
! 	$(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) numeric_big

  ##
--- 157,166 ----
  runtest-parallel: installcheck-parallel
  
  bigtest:
! 	$(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql numeric_big $(NOLOCALE)
  
  bigcheck:
! 	$(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) numeric_big $(NOLOCALE)

  ##
Index: pg_regress.sh
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/pg_regress.sh,v
retrieving revision 1.60
diff -c -r1.60 pg_regress.sh
*** pg_regress.sh	5 Sep 2005 23:50:49 -0000	1.60
--- pg_regress.sh	1 Nov 2005 06:34:51 -0000
***************
*** 24,29 ****
--- 24,30 ----
    --schedule=FILE           use test ordering schedule from FILE
                              (may be used multiple times to concatenate)
    --temp-install[=DIR]      create a temporary installation (in DIR)
+   --no-locale               use C locale
  
  Options for \`temp-install' mode:
    --top-builddir=DIR        (relative) path to top level build directory
***************
*** 99,104 ****
--- 100,106 ----
  unset mode
  unset schedule
  unset debug
+ unset nolocale
  unset top_builddir
  unset temp_install
  unset multibyte
***************
*** 142,147 ****
--- 144,152 ----
          --multibyte=*)
                  multibyte=`expr "x$1" : "x--multibyte=\(.*\)"`
                  shift;;
+         --no-locale)
+                 nolocale=yes
+                 shift;;
          --temp-install)
                  temp_install=./tmp_check
                  shift;;
***************
*** 403,409 ****
      fi
  
      message "initializing database system"
!     [ "$debug" = yes ] && initdb_options='--debug'
      "$bindir/initdb" -D "$PGDATA" -L "$datadir" --noclean $initdb_options >"$LOGDIR/initdb.log" 2>&1
  
      if [ $? -ne 0 ]
--- 408,415 ----
      fi
  
      message "initializing database system"
!     [ "$debug" = yes ] && initdb_options="--debug"
!     [ "$nolocale" = yes ] && initdb_options="$initdb_options --no-locale"
      "$bindir/initdb" -D "$PGDATA" -L "$datadir" --noclean $initdb_options >"$LOGDIR/initdb.log" 2>&1
  
      if [ $? -ne 0 ]

---

From: Tom Lane <[email-masked]>
Date: Tue, 01 Nov 2005 08:41:49 -0500

> solution. Is there any objection to applying it?

Putting the switch at the end seems certain to fail on some platforms
(some versions of getopt are fussier than others).

> ! 	$(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT)…

Put it with the other switches, and I won't object.

			regards, tom lane

---

From: Andrew Dunstan <[email-masked]>
Date: Tue, 01 Nov 2005 10:36:44 -0500

>Put it with the other switches, and I won't object.

applied with this fixed to 8.0 and HEAD.

cheers

andrew