Docs for service file - Mailing list pgsql-patches

From Bruce Momjian
Subject Docs for service file
Date
Msg-id 200301070425.h074PBK13334@candle.pha.pa.us
Whole thread Raw
Responses Re: Docs for service file
List pgsql-patches
Here is documentation and a sample file for the libpq service/PGSERVICE
capabilithy we added in 2000.  Seems it was never documented.  It allows
a central file, pg_service.conf to act as a central location for service
information.

You do connectdb("service=test") and a lookup is done to see the
connection parameters.  The code assume pg_service exists in
install_dir/etc.  Not sure if that is the right place, but it is a libpq
config file, so none of the other places seemed to make sense.  Ideas?

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: doc/src/sgml/libpq.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/libpq.sgml,v
retrieving revision 1.104
diff -c -c -r1.104 libpq.sgml
*** doc/src/sgml/libpq.sgml    6 Jan 2003 22:48:16 -0000    1.104
--- doc/src/sgml/libpq.sgml    7 Jan 2003 04:06:52 -0000
***************
*** 1,5 ****
  <!--
! $Header: /cvsroot/pgsql-server/doc/src/sgml/libpq.sgml,v 1.104 2003/01/06 22:48:16 momjian Exp $
  -->

   <chapter id="libpq">
--- 1,5 ----
  <!--
! $Header: /cvsroot/pgsql-server/doc/src/sgml/libpq.sgml,v 1.103 2002/12/13 05:49:10 momjian Exp $
  -->

   <chapter id="libpq">
***************
*** 206,211 ****
--- 206,224 ----
        Set to 1 to require SSL connection to the backend. <application>Libpq</>
        will then refuse to connect if the server does not support
        SSL. Set to 0 (default) to negotiate with server.
+      </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>service</literal></term>
+      <listitem>
+      <para>
+       Service name to use for additional parameters.  It specifies a service
+       name in pg_service.conf that holds additional connection parameters.
+       This allows applications to specify only a service name so connection parameters
+       can be centrally maintained.  See <literal>pg_service.conf.sample</> for
+       information on how to set up the file.
       </para>
       </listitem>
      </varlistentry>
Index: src/backend/Makefile
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/Makefile,v
retrieving revision 1.90
diff -c -c -r1.90 Makefile
*** src/backend/Makefile    6 Jan 2003 03:18:26 -0000    1.90
--- src/backend/Makefile    7 Jan 2003 04:06:52 -0000
***************
*** 140,147 ****
          > $(srcdir)/libpq/pg_hba.conf.sample.no_ipv6
      $(INSTALL_DATA) $(srcdir)/libpq/pg_hba.conf.sample.no_ipv6 $(DESTDIR)$(datadir)/pg_hba.conf.sample
  endif
      $(INSTALL_DATA) $(srcdir)/libpq/pg_ident.conf.sample $(DESTDIR)$(datadir)/pg_ident.conf.sample
!     $(INSTALL_DATA) $(srcdir)/utils/misc/postgresql.conf.sample $(DESTDIR)$(datadir)/postgresql.conf.sample

  install-bin: postgres $(POSTGRES_IMP) installdirs
      $(INSTALL_PROGRAM) postgres$(X) $(DESTDIR)$(bindir)/postgres$(X)
--- 140,148 ----
          > $(srcdir)/libpq/pg_hba.conf.sample.no_ipv6
      $(INSTALL_DATA) $(srcdir)/libpq/pg_hba.conf.sample.no_ipv6 $(DESTDIR)$(datadir)/pg_hba.conf.sample
  endif
+     $(INSTALL_DATA) $(srcdir)/libpq/pg_service.conf.sample $(DESTDIR)$(datadir)/pg_service.conf.sample
      $(INSTALL_DATA) $(srcdir)/libpq/pg_ident.conf.sample $(DESTDIR)$(datadir)/pg_ident.conf.sample
!         $(INSTALL_DATA) $(srcdir)/utils/misc/postgresql.conf.sample $(DESTDIR)$(datadir)/postgresql.conf.sample

  install-bin: postgres $(POSTGRES_IMP) installdirs
      $(INSTALL_PROGRAM) postgres$(X) $(DESTDIR)$(bindir)/postgres$(X)
***************
*** 179,186 ****
  endif
      $(MAKE) -C catalog uninstall-data
      rm -f $(DESTDIR)$(datadir)/pg_hba.conf.sample \
            $(DESTDIR)$(datadir)/pg_ident.conf.sample \
!           $(DESTDIR)$(datadir)/postgresql.conf.sample


  ##########################################################################
--- 180,188 ----
  endif
      $(MAKE) -C catalog uninstall-data
      rm -f $(DESTDIR)$(datadir)/pg_hba.conf.sample \
+           $(DESTDIR)$(datadir)/pg_service.conf.sample \
            $(DESTDIR)$(datadir)/pg_ident.conf.sample \
!               $(DESTDIR)$(datadir)/postgresql.conf.sample


  ##########################################################################
Index: src/interfaces/libpq/fe-connect.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-connect.c,v
retrieving revision 1.218
diff -c -c -r1.218 fe-connect.c
*** src/interfaces/libpq/fe-connect.c    6 Jan 2003 22:48:16 -0000    1.218
--- src/interfaces/libpq/fe-connect.c    7 Jan 2003 04:07:00 -0000
***************
*** 2338,2351 ****
              return 1;
          }

!         /* As default, set the database name to the name of the service */
          for (i = 0; options[i].keyword; i++)
              if (strcmp(options[i].keyword, "dbname") == 0)
!             {
!                 if (options[i].val != NULL)
!                     free(options[i].val);
!                 options[i].val = strdup(service);
!             }

          while ((line = fgets(buf, MAXBUFSIZE - 1, f)) != NULL)
          {
--- 2338,2348 ----
              return 1;
          }

!         /* If not already set, set the database name to the name of the service */
          for (i = 0; options[i].keyword; i++)
              if (strcmp(options[i].keyword, "dbname") == 0)
!                 if (options[i].val == NULL)
!                     options[i].val = strdup(service);

          while ((line = fgets(buf, MAXBUFSIZE - 1, f)) != NULL)
          {
#
#    Connection configuration file
#
# A service is a set of named connection parameters.  You may specify
# multiple services in this file.  Each starts with a service name in
# brackets.  Subsequent lines have connection configuration parameters of
# the pattern  "param=value".  A sample configuration for template1 is
# included in this file.  If no database name is specified, it is assumed
# to match the service name.  Lines beginning with '#' are comments.
#
# Copy this to your sysconf directory (typically /usr/local/pgsql/etc) and
# rename it pg_service.conf.
#
#
#[template1]
#user=postgres

pgsql-patches by date:

Previous
From: Giles Lean
Date:
Subject: Re: Fix for HP-UX shared library builds
Next
From: Tom Lane
Date:
Subject: Re: Fix for HP-UX shared library builds