echo "PostgreSQL - Creating database"
psql -h "${SQL_POSTGRESQL_TEST_SERVER}" -c 'create database radius;' -U postgres || true
-#
-# Pin standard_conforming_strings = on for new connections to this DB.
-# Modern PostgreSQL defaults to on (since 9.1), but pinning it here makes
-# the escape tests' expected output deterministic across server configs.
-#
-echo "PostgreSQL - Pinning standard_conforming_strings"
-psql -h "${SQL_POSTGRESQL_TEST_SERVER}" -c 'ALTER DATABASE radius SET standard_conforming_strings = on;' -U postgres
-
echo "PostgreSQL - Execute schema.sql"
psql -h "${SQL_POSTGRESQL_TEST_SERVER}" -U postgres radius < raddb/mods-config/sql/main/postgresql/schema.sql
#
# PostgreSQL escape function (via PQescapeStringConn).
#
-# Assumes standard_conforming_strings = on on the test server. Under that
-# mode PQescapeStringConn only doubles single quotes - backslashes and
-# other byte values pass through unchanged. The CI postgres setup script
-# pins this on the test database.
+# Single-quote doubling is the only byte transformation that's stable
+# regardless of the server's standard_conforming_strings setting, so it's
+# the only one we assert on here. ASCII and UTF-8 pass-through are also
+# invariant.
#
# String literals in unlang are marked "safe for any escape" so we wrap
# each input in %taint(...) to force the escape to actually run.
test_fail
}
-#
-# Backslash passes through unchanged.
-#
-if (%sql.escape(%taint("back\\slash")) != "back\\slash") {
- test_fail
-}
-
#
# Multi-byte UTF-8 is passed through unchanged.
#