Hi,

attached is a patch against HEAD that removes the postmaster's -o
option. It passes make check on i386 Ubuntu 5.10. I sent an e-mail
earlier today asking about the status of this TODO item to -hackers.
No answers so far :)

Markus Bertheau
? GNUmakefile
? config.log
? config.status
? contrib/spi/.deps
? doc/src/sgml/ref/.postgres-ref.sgml.swp
? src/Makefile.global
? src/backend/postgres
? src/backend/access/common/.deps
? src/backend/access/gist/.deps
? src/backend/access/hash/.deps
? src/backend/access/heap/.deps
? src/backend/access/index/.deps
? src/backend/access/nbtree/.deps
? src/backend/access/transam/.deps
? src/backend/bootstrap/.deps
? src/backend/catalog/.deps
? src/backend/catalog/postgres.bki
? src/backend/catalog/postgres.description
? src/backend/catalog/postgres.shdescription
? src/backend/commands/.deps
? src/backend/executor/.deps
? src/backend/lib/.deps
? src/backend/libpq/.deps
? src/backend/main/.deps
? src/backend/nodes/.deps
? src/backend/optimizer/geqo/.deps
? src/backend/optimizer/path/.deps
? src/backend/optimizer/plan/.deps
? src/backend/optimizer/prep/.deps
? src/backend/optimizer/util/.deps
? src/backend/parser/.deps
? src/backend/port/.deps
? src/backend/postmaster/.deps
? src/backend/postmaster/.postmaster.c.swp
? src/backend/regex/.deps
? src/backend/rewrite/.deps
? src/backend/storage/buffer/.deps
? src/backend/storage/file/.deps
? src/backend/storage/freespace/.deps
? src/backend/storage/ipc/.deps
? src/backend/storage/large_object/.deps
? src/backend/storage/lmgr/.deps
? src/backend/storage/page/.deps
? src/backend/storage/smgr/.deps
? src/backend/tcop/.deps
? src/backend/utils/.deps
? src/backend/utils/adt/.deps
? src/backend/utils/cache/.deps
? src/backend/utils/error/.deps
? src/backend/utils/fmgr/.deps
? src/backend/utils/hash/.deps
? src/backend/utils/init/.deps
? src/backend/utils/mb/.deps
? src/backend/utils/mb/conversion_procs/conversion_create.sql
? src/backend/utils/mb/conversion_procs/ascii_and_mic/.deps
? src/backend/utils/mb/conversion_procs/ascii_and_mic/libascii_and_mic.so.0.0
? src/backend/utils/mb/conversion_procs/cyrillic_and_mic/.deps
? src/backend/utils/mb/conversion_procs/cyrillic_and_mic/libcyrillic_and_mic.so.0.0
? src/backend/utils/mb/conversion_procs/euc_cn_and_mic/.deps
? src/backend/utils/mb/conversion_procs/euc_cn_and_mic/libeuc_cn_and_mic.so.0.0
? src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/.deps
? src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/libeuc_jp_and_sjis.so.0.0
? src/backend/utils/mb/conversion_procs/euc_kr_and_mic/.deps
? src/backend/utils/mb/conversion_procs/euc_kr_and_mic/libeuc_kr_and_mic.so.0.0
? src/backend/utils/mb/conversion_procs/euc_tw_and_big5/.deps
? src/backend/utils/mb/conversion_procs/euc_tw_and_big5/libeuc_tw_and_big5.so.0.0
? src/backend/utils/mb/conversion_procs/latin2_and_win1250/.deps
? src/backend/utils/mb/conversion_procs/latin2_and_win1250/liblatin2_and_win1250.so.0.0
? src/backend/utils/mb/conversion_procs/latin_and_mic/.deps
? src/backend/utils/mb/conversion_procs/latin_and_mic/liblatin_and_mic.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_ascii/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_ascii/libutf8_and_ascii.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_big5/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_big5/libutf8_and_big5.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/libutf8_and_cyrillic.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/libutf8_and_euc_cn.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/libutf8_and_euc_jp.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/libutf8_and_euc_kr.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/libutf8_and_euc_tw.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_gb18030/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_gb18030/libutf8_and_gb18030.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_gbk/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_gbk/libutf8_and_gbk.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_iso8859/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_iso8859/libutf8_and_iso8859.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/libutf8_and_iso8859_1.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_johab/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_johab/libutf8_and_johab.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_sjis/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_sjis/libutf8_and_sjis.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_uhc/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_uhc/libutf8_and_uhc.so.0.0
? src/backend/utils/mb/conversion_procs/utf8_and_win/.deps
? src/backend/utils/mb/conversion_procs/utf8_and_win/libutf8_and_win.so.0.0
? src/backend/utils/misc/.deps
? src/backend/utils/mmgr/.deps
? src/backend/utils/resowner/.deps
? src/backend/utils/sort/.deps
? src/backend/utils/time/.deps
? src/bin/initdb/.deps
? src/bin/initdb/initdb
? src/bin/ipcclean/ipcclean
? src/bin/pg_config/.deps
? src/bin/pg_config/pg_config
? src/bin/pg_controldata/.deps
? src/bin/pg_controldata/pg_controldata
? src/bin/pg_ctl/.deps
? src/bin/pg_ctl/pg_ctl
? src/bin/pg_dump/.deps
? src/bin/pg_dump/pg_dump
? src/bin/pg_dump/pg_dumpall
? src/bin/pg_dump/pg_restore
? src/bin/pg_resetxlog/.deps
? src/bin/pg_resetxlog/pg_resetxlog
? src/bin/psql/.deps
? src/bin/psql/psql
? src/bin/scripts/.deps
? src/bin/scripts/clusterdb
? src/bin/scripts/createdb
? src/bin/scripts/createlang
? src/bin/scripts/createuser
? src/bin/scripts/dropdb
? src/bin/scripts/droplang
? src/bin/scripts/dropuser
? src/bin/scripts/reindexdb
? src/bin/scripts/vacuumdb
? src/include/pg_config.h
? src/include/stamp-h
? src/interfaces/ecpg/compatlib/.deps
? src/interfaces/ecpg/compatlib/libecpg_compat.so.2.2
? src/interfaces/ecpg/ecpglib/.deps
? src/interfaces/ecpg/ecpglib/libecpg.so.5.2
? src/interfaces/ecpg/pgtypeslib/.deps
? src/interfaces/ecpg/pgtypeslib/libpgtypes.so.2.2
? src/interfaces/ecpg/preproc/.deps
? src/interfaces/ecpg/preproc/ecpg
? src/interfaces/libpq/.deps
? src/interfaces/libpq/libpq.so.4.2
? src/pl/plpgsql/src/.deps
? src/pl/plpgsql/src/libplpgsql.so.1.0
? src/port/.deps
? src/port/pg_config_paths.h
? src/test/regress/.deps
? src/test/regress/libregress.so.0.0
? src/test/regress/log
? src/test/regress/pg_regress
? src/test/regress/results
? src/test/regress/testtablespace
? src/test/regress/tmp_check
? src/test/regress/expected/constraints.out
? src/test/regress/expected/copy.out
? src/test/regress/expected/create_function_1.out
? src/test/regress/expected/create_function_2.out
? src/test/regress/expected/misc.out
? src/test/regress/expected/tablespace.out
? src/test/regress/sql/constraints.sql
? src/test/regress/sql/copy.sql
? src/test/regress/sql/create_function_1.sql
? src/test/regress/sql/create_function_2.sql
? src/test/regress/sql/misc.sql
? src/test/regress/sql/tablespace.sql
? src/timezone/.deps
? src/timezone/zic
Index: doc/src/sgml/ref/postmaster.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/postmaster.sgml,v
retrieving revision 1.56
diff -u -c -r1.56 postmaster.sgml
*** doc/src/sgml/ref/postmaster.sgml	6 Jan 2006 01:35:09 -0000	1.56
--- doc/src/sgml/ref/postmaster.sgml	5 Mar 2006 17:29:27 -0000
***************
*** 255,280 ****
       </varlistentry>
  
       <varlistentry>
-       <term><option>-o <replaceable class="parameter">extra-options</replaceable></option></term>
-       <listitem>
-        <para>
- 	The command line-style options specified in <replaceable
- 	class="parameter">extra-options</replaceable> are passed to
- 	all server processes started by this
- 	<command>postmaster</command>.  See <xref
- 	linkend="app-postgres"> for possibilities.  If the option
- 	string contains any spaces, the entire string must be quoted.
-        </para>
- 
-        <para>
-         The use of this option is obsolete; all command-line options
-         for server processes can be specified directly on the
-         <command>postmaster</command> command line
-        </para>
-       </listitem>
-      </varlistentry>
- 
-      <varlistentry>
        <term><option>-p <replaceable class="parameter">port</replaceable></option></term>
        <listitem>
         <para>
--- 255,260 ----
Index: src/backend/postmaster/postmaster.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/postmaster/postmaster.c,v
retrieving revision 1.481
diff -u -c -r1.481 postmaster.c
*** src/backend/postmaster/postmaster.c	1 Feb 2006 16:00:06 -0000	1.481
--- src/backend/postmaster/postmaster.c	5 Mar 2006 17:29:28 -0000
***************
*** 176,186 ****
  static int	ListenSocket[MAXLISTEN];
  
  /*
-  * Set by the -o option
-  */
- static char ExtraOptions[MAXPGPATH];
- 
- /*
   * These globals control the behavior of the postmaster in case some
   * backend dumps core.	Normally, it kills all peers of the dead backend
   * and reinitializes shared memory.  By specifying -s or -n, we can have
--- 176,181 ----
***************
*** 346,352 ****
  #endif
  	char		my_exec_path[MAXPGPATH];
  	char		pkglib_path[MAXPGPATH];
- 	char		ExtraOptions[MAXPGPATH];
  	char		lc_collate[LOCALE_NAME_BUFLEN];
  	char		lc_ctype[LOCALE_NAME_BUFLEN];
  }	BackendParameters;
--- 341,346 ----
***************
*** 443,449 ****
  
  	opterr = 1;
  
! 	while ((opt = getopt(argc, argv, "A:B:c:D:d:EeFf:h:ijk:lN:nOo:Pp:r:S:sTt:W:-:")) != -1)
  	{
  		switch (opt)
  		{
--- 437,443 ----
  
  	opterr = 1;
  
! 	while ((opt = getopt(argc, argv, "A:B:c:D:d:EeFf:h:ijk:lN:nO:Pp:r:S:sTt:W:-:")) != -1)
  	{
  		switch (opt)
  		{
***************
*** 517,529 ****
  				SetConfigOption("allow_system_table_mods", "true", PGC_POSTMASTER, PGC_S_ARGV);
  				break;
  
- 			case 'o':
- 				/* Other options to pass to the backend on the command line */
- 				snprintf(ExtraOptions + strlen(ExtraOptions),
- 						 sizeof(ExtraOptions) - strlen(ExtraOptions),
- 						 " %s", optarg);
- 				break;
- 
  			case 'P':
  				SetConfigOption("ignore_system_indexes", "true", PGC_POSTMASTER, PGC_S_ARGV);
  				break;
--- 511,516 ----
***************
*** 2845,2856 ****
  	 * where the switches after -y come from the client request.
  	 *
  	 * The maximum possible number of commandline arguments that could come
! 	 * from ExtraOptions or port->cmdline_options is (strlen + 1) / 2; see
! 	 * split_opts().
  	 * ----------------
  	 */
  	maxac = 10;					/* for fixed args supplied below */
- 	maxac += (strlen(ExtraOptions) + 1) / 2;
  	if (port->cmdline_options)
  		maxac += (strlen(port->cmdline_options) + 1) / 2;
  
--- 2832,2841 ----
  	 * where the switches after -y come from the client request.
  	 *
  	 * The maximum possible number of commandline arguments that could come
! 	 * from port->cmdline_options is (strlen + 1) / 2; see split_opts().
  	 * ----------------
  	 */
  	maxac = 10;					/* for fixed args supplied below */
  	if (port->cmdline_options)
  		maxac += (strlen(port->cmdline_options) + 1) / 2;
  
***************
*** 2860,2872 ****
  
  	av[ac++] = "postgres";
  
- 	/*
- 	 * Pass any backend switches specified with -o in the postmaster's own
- 	 * command line.  We assume these are secure.  (It's OK to mangle
- 	 * ExtraOptions now, since we're safely inside a subprocess.)
- 	 */
- 	split_opts(av, &ac, ExtraOptions);
- 
  	/* Tell the backend what protocol the frontend is using. */
  	snprintf(protobuf, sizeof(protobuf), "-v%u", port->proto);
  	av[ac++] = protobuf;
--- 2845,2850 ----
***************
*** 3815,3822 ****
  
  	StrNCpy(param->pkglib_path, pkglib_path, MAXPGPATH);
  
- 	StrNCpy(param->ExtraOptions, ExtraOptions, MAXPGPATH);
- 
  	StrNCpy(param->lc_collate, setlocale(LC_COLLATE, NULL), LOCALE_NAME_BUFLEN);
  	StrNCpy(param->lc_ctype, setlocale(LC_CTYPE, NULL), LOCALE_NAME_BUFLEN);
  
--- 3793,3798 ----
***************
*** 4018,4025 ****
  
  	StrNCpy(pkglib_path, param->pkglib_path, MAXPGPATH);
  
- 	StrNCpy(ExtraOptions, param->ExtraOptions, MAXPGPATH);
- 
  	setlocale(LC_COLLATE, param->lc_collate);
  	setlocale(LC_CTYPE, param->lc_ctype);
  }
--- 3994,3999 ----
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to