Version and Platform Compatibility Parameters

This document describes the parameters in the system configuration under the Version and Platform Compatibility category.

Note!
To ensure system stability and security, manually modifying these parameters should be done with caution.


Versions Prior to PostgreSQL 12

array_nulls


This parameter controls whether the array input parser recognizes unquoted NULL as a null array element.

  • The default is on, allowing input of array values containing nulls.
  • Note: Arrays containing null values can still be created even if this parameter is set to off.
Data Type Default Value Setting Scope
boolean on master; session; reload

backslash_quote


This parameter controls whether single quotes in string literals can be escaped using \'.

  • The preferred SQL-standard method is to double the quote (''), but \' is also accepted.
  • However, using \' poses a security risk. In some client character set encodings, the last byte of a multibyte character may numerically equal ASCII \'. If client code does not properly escape such cases, it could lead to SQL injection attacks. This risk can be avoided if the server rejects queries that appear to use backslash-escaped single quotes.
  • Allowed values for this parameter are on (always allow \'), off (always reject), and safe_encoding (allow only when the client encoding does not permit ASCII \ within multibyte characters).
  • Note: In standard-conforming string literals, \ represents \. This parameter affects only nonstandard string literals, including escape string syntax (E'...').
Data Type Default Value Setting Scope
enum safe_encoding master; session; reload

escape_string_warning


When enabled, this parameter issues a warning if a backslash (\) appears in a plain string literal ('...' syntax) and standard_conforming_strings is disabled.

  • Applications using backslashes as escape characters should consider using escape string syntax (E'...'), as the SQL standard treats backslashes as ordinary characters in plain strings by default.
  • This parameter can be enabled to help identify code that may need modification.
Data Type Default Value Setting Scope
boolean on master; session; reload

lo_compat_privileges


Setting this parameter to on disables the new privilege checks for compatibility with earlier versions.

  • Large objects have no access privileges and are therefore readable and writable by all users.
  • Enabling this parameter does not disable all security checks related to large objects.
Data Type Default Value Setting Scope
boolean off segments; session; reload; superuser

operator_precedence_warning


When enabled, the parser issues a warning for any constructs whose meaning has changed due to operator precedence changes since PostgreSQL 9.4.

  • This helps audit applications to determine whether precedence changes have affected query behavior. However, it is not intended for long-term use in production environments, as it may issue warnings for perfectly valid, standard-compliant SQL code.
Data Type Default Value Setting Scope
boolean off segments; session; reload

quote_all_identifiers


When generating SQL, forces all identifiers to be enclosed in double quotes, even if they are not currently keywords.

  • This affects output from EXPLAIN and results from functions such as pg_get_viewdef. See also the --quote-all-identifiers option in pg_dump and pg_dumpall.
Data Type Default Value Setting Scope
boolean off segments; session; reload

standard_conforming_strings


Controls whether plain string literals ('...') treat backslashes as literal characters according to the SQL standard.

  • The default is on (in earlier releases, the default was off).
  • Applications can check this parameter to determine how string literals will be interpreted.
  • The presence of this parameter indicates support for escape string syntax (E'...'). Applications that require backslashes as escape characters should use escape string syntax.
Data Type Default Value Setting Scope
boolean on master; session; reload

synchronize_seqscans


Enables sequential scans of large tables to synchronize with other concurrent scans, so that they read the same blocks at nearly the same time, reducing I/O load.

  • When enabled, a scan may start from the middle of a table and later "wrap around" to the beginning to cover all rows, aligning with ongoing scan activity.
  • For queries without an ORDER BY clause, this can result in unpredictable changes in the order of returned rows.
Data Type Default Value Setting Scope
boolean on segments; session; reload

gp_debug_add_path


Determines whether path debugging information is added to the YMatrix database.

  • This parameter is primarily used for optimizer debugging. When enabled, it prints all paths considered by the optimizer, with red indicating rejected paths and green indicating selected ones.
Data Type Default Value Setting Scope
boolean off master; session; reload


Other Platforms and Clients

transform_null_equals


When enabled, expressions of the form expr = NULL (or NULL = expr) are treated as expr IS NULL; that is, the expression returns true if expr evaluates to null, and false otherwise.

  • The correct SQL-standard behavior for expr = NULL always returns null (unknown). Therefore, this parameter defaults to off.
  • However, queries generated by filter forms in Microsoft Access appear to use expr = NULL to test for nulls. If you access the database through this interface, you may want to enable this option.
  • Since expressions of the form expr = NULL always return null under the SQL standard interpretation, they are not very useful and rarely appear in typical applications. Thus, enabling this option poses little practical risk. However, many new users find the semantics of null-value expressions confusing, so this option is disabled by default.
  • Note that this option affects only expressions of the form = NULL, not other comparison operators or equivalent expressions involving equality (e.g., IN). Therefore, this option is not a general fix for poorly written applications.
Data Type Default Value Setting Scope
boolean off master; session; reload