Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IDO PgSQL: always use regular string literals #8955

Merged
merged 1 commit into from
Aug 5, 2021
Merged

Commits on Aug 5, 2021

  1. IDO PgSQL: always use regular string literals

    IdoPgsqlConnection::Escape() internally uses PQescapeStringConn() and its
    documentation states the following:
    
      Furthermore, PQescapeStringConn does not generate the single quotes that must
      surround PostgreSQL string literals; they should be provided in the SQL
      command that the result is inserted into.
    
    So it's intended to use the result in 'string' literals, not in E'string'
    literals as Icinga did. This results in problems as the behavior of
    PQescapeStringConn() depends on how the current connection will interpret
    regular single quoted literals, namely on the value of the
    standard_conforming_strings variable.
    
    The E'string' literals were initially introduced in
    ac6f3f8 to fix #1206 where PostgreSQL started
    warning about escape sequences in string literals not supported by the SQL
    standard (but by PostgreSQL depending on the value of
    standard_conforming_strings). In the meantime the oldest PostgreSQL version on
    any platform supported by Icinga increased to 9.2 (CentOS 7) and starting with
    9.1, standard_conforming_strings is enabled by default, so there will be no
    warnings about escape sequences (as the warning is only issued if the escape
    sequence is actually interpreted by PostgreSQL).
    julianbrost committed Aug 5, 2021
    Configuration menu
    Copy the full SHA
    782669f View commit details
    Browse the repository at this point in the history