db_postgres Module
     __________________________________________________________

   Table of Contents

   1. Admin Guide

        1.1. Overview
        1.2. Dependencies

              1.2.1. OpenSIPS Modules
              1.2.2. External Libraries or Applications

        1.3. Exported Parameters

              1.3.1. exec_query_threshold (integer)
              1.3.2. max_db_queries (integer)
              1.3.3. timeout (integer)
              1.3.4. use_tls (integer)

        1.4. Exported Functions
        1.5. Installation and Running

   2. Contributors

        2.1. By Commit Statistics
        2.2. By Commit Activity

   3. Documentation

        3.1. Contributors

   List of Tables

   2.1. Top contributors by DevScore^(1), authored commits^(2) and
          lines added/removed^(3)

   2.2. Most recently active contributors^(1) to this module

   List of Examples

   1.1. Set exec_query_threshold parameter
   1.2. Set max_db_queries parameter
   1.3. Set timeout parameter
   1.4. Set the use_tls parameter

Chapter 1. Admin Guide

1.1. Overview

   Module description

1.2. Dependencies

1.2.1. OpenSIPS Modules

   The following modules must be loaded before this module:
     * No dependencies on other OpenSIPS modules.

1.2.2. External Libraries or Applications

   The following libraries or applications must be installed
   before running OpenSIPS with this module loaded:
     * PostgreSQL library - e.g., libpq5.
     * PostgreSQL devel library - to compile the module (e.g.,
       libpq-dev).

1.3. Exported Parameters

1.3.1. exec_query_threshold (integer)

   If queries take longer than 'exec_query_threshold'
   microseconds, warning messages will be written to logging
   facility.

   Default value is 0 - disabled.

   Example 1.1. Set exec_query_threshold parameter
...
modparam("db_postgres", "exec_query_threshold", 60000)
...

1.3.2. max_db_queries (integer)

   The maximum number of database queries to be executed. If this
   parameter is set improperly, it is set to default value.

   Default value is 2.

   Example 1.2. Set max_db_queries parameter
...
modparam("db_postgres", "max_db_queries", 2)
...

1.3.3. timeout (integer)

   The number of seconds the PostgreSQL library waits to connect
   and query the server. If the connection does not succeed within
   the given timeout, the connection fails.

   Note:If the timeout is a negative value and connection does not
   succeed, OpenSIPS will block until the connection becomes back
   available and gets successfully established. This is the
   default behavior of the library and is the behavior prior to
   the adition of this parameter.

   Default value is 5.

   Example 1.3. Set timeout parameter
...
modparam("db_postgres", "timeout", 2)
...

1.3.4. use_tls (integer)

   Parameter to control the way the SSL support is used when
   connecting to the Postgres server, as follows:
     * use_tls=0 (default) - the SSL support is disabled and there
       is no attempt to use it;
     * use_tls=1 with "tls_domain" present in the DB URL - the SSL
       support is enabled, either "require", either "verify-ca",
       depending on the certificate settings;
     * use_tls=1 with no "tls_domain" present in the DB URL - the
       SSL support is enabled in best effort mode (or "prefer");
       if supported by the server, it will be used, otherwise it
       will fall back to non-SSL.

   Warning: the tls_openssl module cannot be used when setting
   this parameter. Use the tls_wolfssl module instead if a TLS/SSL
   Library is required.

   Setting this parameter will allow you to use TLS for PostgreSQL
   connections. In order to enable TLS for a specific connection,
   you can use the "tls_domain=dom_name" URL parameter in the
   db_url of the respective OpenSIPS module. This should be placed
   at the end of the URL after the '?' character.

   When using this parameter, you must also ensure that tls_mgm is
   loaded and properly configured. Refer to the the module for
   additional info regarding TLS client domains.

   Note that if you want to use this feature, the TLS domain must
   be provisioned in the configuration file, NOT in the database.
   In case you are loading TLS certificates from the database, you
   must at least define one domain in the configuration script, to
   use for the initial connection to the DB.

   Also, you can NOT enable TLS for the connection to the database
   of the tls_mgm module itself.

   Default value is 0 (not enabled)

   Example 1.4. Set the use_tls parameter
...
modparam("tls_mgm", "client_domain", "dom1")
modparam("tls_mgm", "certificate", "[dom1]/etc/pki/tls/certs/opensips.pe
m")
modparam("tls_mgm", "private_key", "[dom1]/etc/pki/tls/private/opensips.
key")
modparam("tls_mgm", "ca_list",     "[dom1]/etc/pki/tls/certs/ca.pem")
...
modparam("db_postgres", "use_tls", 1)
...
modparam("usrloc", "db_url", "postgres://root:1234@localhost/opensips?tl
s_domain=dom1")
...

1.4. Exported Functions

   NONE

1.5. Installation and Running

   Notes about installation and running.

Chapter 2. Contributors

2.1. By Commit Statistics

   Table 2.1. Top contributors by DevScore^(1), authored
   commits^(2) and lines added/removed^(3)
     Name DevScore Commits Lines ++ Lines --
   1. Henning Westerholt (@henningw) 67 29 554 1963
   2. Bogdan-Andrei Iancu (@bogdan-iancu) 61 45 1088 349
   3. Norman Brandinger (@NormB) 55 4 1449 2247
   4. Greg Fausak 42 3 4472 2
   5. Daniel-Constantin Mierla (@miconda) 27 20 350 203
   6. Liviu Chircu (@liviuchircu) 18 15 45 87
   7. Razvan Crainea (@razvancrainea) 15 12 210 27
   8. Jan Janak (@janakj) 12 8 300 23
   9. Klaus Darilion 10 6 139 67
   10. Vlad Paiu (@vladpaiu) 9 7 102 34

   All remaining contributors: Maksym Sobolyev (@sobomax), Vlad
   Patrascu (@rvlad-patrascu), Ancuta Onofrei, Norman Brandinger,
   Andrei Pelinescu-Onciul, Dusan Klinec (@ph4r05), Eseanu Marius
   Cristian (@eseanucristian), Ruslan Bukin, Ryan Bullock
   (@rrb3942), Konstantin Bokarius, Razvan Pistolea, Aron
   Podrigal, Dan Pascu (@danpascu), Peter Lemenkov (@lemenkov),
   Edson Gellert Schubert, Jarrod Baumann (@jarrodb).

   (1) DevScore = author_commits + author_lines_added /
   (project_lines_added / project_commits) + author_lines_deleted
   / (project_lines_deleted / project_commits)

   (2) including any documentation-related commits, excluding
   merge commits. Regarding imported patches/code, we do our best
   to count the work on behalf of the proper owner, as per the
   "fix_authors" and "mod_renames" arrays in
   opensips/doc/build-contrib.sh. If you identify any
   patches/commits which do not get properly attributed to you,
   please submit a pull request which extends "fix_authors" and/or
   "mod_renames".

   (3) ignoring whitespace edits, renamed files and auto-generated
   files

2.2. By Commit Activity

   Table 2.2. Most recently active contributors^(1) to this module
                      Name                   Commit Activity
   1.  Razvan Crainea (@razvancrainea)     Oct 2011 - Jul 2024
   2.  Liviu Chircu (@liviuchircu)         Sep 2012 - May 2024
   3.  Bogdan-Andrei Iancu (@bogdan-iancu) Jul 2005 - Feb 2024
   4.  Maksym Sobolyev (@sobomax)          Apr 2004 - Feb 2023
   5.  Vlad Patrascu (@rvlad-patrascu)     May 2017 - Oct 2021
   6.  Norman Brandinger (@NormB)          Aug 2006 - Oct 2021
   7.  Dan Pascu (@danpascu)               May 2019 - May 2019
   8.  Ryan Bullock (@rrb3942)             Mar 2019 - Mar 2019
   9.  Vlad Paiu (@vladpaiu)               Jan 2011 - Feb 2019
   10. Peter Lemenkov (@lemenkov)          Jun 2018 - Jun 2018

   All remaining contributors: Jarrod Baumann (@jarrodb), Dusan
   Klinec (@ph4r05), Aron Podrigal, Eseanu Marius Cristian
   (@eseanucristian), Razvan Pistolea, Ruslan Bukin, Henning
   Westerholt (@henningw), Daniel-Constantin Mierla (@miconda),
   Konstantin Bokarius, Edson Gellert Schubert, Ancuta Onofrei,
   Klaus Darilion, Norman Brandinger, Jan Janak (@janakj), Greg
   Fausak, Andrei Pelinescu-Onciul.

   (1) including any documentation-related commits, excluding
   merge commits

Chapter 3. Documentation

3.1. Contributors

   Last edited by: Bogdan-Andrei Iancu (@bogdan-iancu), Vlad
   Patrascu (@rvlad-patrascu), Norman Brandinger (@NormB), Liviu
   Chircu (@liviuchircu), Razvan Crainea (@razvancrainea), Peter
   Lemenkov (@lemenkov), Aron Podrigal, Eseanu Marius Cristian
   (@eseanucristian), Vlad Paiu (@vladpaiu), Daniel-Constantin
   Mierla (@miconda), Konstantin Bokarius, Edson Gellert Schubert,
   Henning Westerholt (@henningw), Jan Janak (@janakj).

   Documentation Copyrights:

   Copyright © 2003 Greg Fausak
