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 (2.13) #8958

Merged
merged 1 commit into from
Aug 12, 2021

Conversation

julianbrost
Copy link
Contributor

backport of #8955

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).
@cla-bot cla-bot bot added the cla/signed label Aug 5, 2021
@icinga-probot icinga-probot bot added area/db-ido Database output bug Something isn't working labels Aug 5, 2021
@icinga-probot icinga-probot bot added this to the 2.13.1 milestone Aug 5, 2021
@julianbrost julianbrost changed the title IDO PgSQL: always use regular string literals IDO PgSQL: always use regular string literals (2.13) Aug 5, 2021
@julianbrost julianbrost requested a review from N-o-X August 12, 2021 08:30
@N-o-X N-o-X merged commit bbf29e7 into support/2.13 Aug 12, 2021
@icinga-probot icinga-probot bot deleted the bugfix/pgsql-escape branch August 12, 2021 12:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/db-ido Database output bug Something isn't working cla/signed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants