Skip to content

Commit f18bcc6

Browse files
committed
Force database client encoding to UTF8
Doesn't hurt and might prevent some problems, because osm2pgsql is always dealing with UTF8 data. Note that, just as with the fallback_application_name, this setting isn't set in all cases, but we don't want to meddle with the user settings too much to not break the connection info.
1 parent c706900 commit f18bcc6

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

src/options.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,8 @@ std::string build_conninfo(database_options_t const &opt)
263263
return out;
264264
}
265265

266+
out += " client_encoding='UTF8'";
267+
266268
if (!opt.db.empty()) {
267269
out += " dbname='{}'"_format(opt.db);
268270
}

tests/test-options-database.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,42 +20,43 @@
2020
TEST_CASE("Connection info parsing with dbname", "[NoDB]")
2121
{
2222
database_options_t db;
23-
CHECK(build_conninfo(db) == "fallback_application_name='osm2pgsql'");
24-
db.db = "foo";
2523
CHECK(build_conninfo(db) ==
26-
"fallback_application_name='osm2pgsql' dbname='foo'");
24+
"fallback_application_name='osm2pgsql' client_encoding='UTF8'");
25+
db.db = "foo";
26+
CHECK(build_conninfo(db) == "fallback_application_name='osm2pgsql' "
27+
"client_encoding='UTF8' dbname='foo'");
2728
}
2829

2930
TEST_CASE("Connection info parsing with user", "[NoDB]")
3031
{
3132
database_options_t db;
3233
db.username = "bar";
33-
CHECK(build_conninfo(db) ==
34-
"fallback_application_name='osm2pgsql' user='bar'");
34+
CHECK(build_conninfo(db) == "fallback_application_name='osm2pgsql' "
35+
"client_encoding='UTF8' user='bar'");
3536
}
3637

3738
TEST_CASE("Connection info parsing with password", "[NoDB]")
3839
{
3940
database_options_t db;
4041
db.password = "bar";
41-
CHECK(build_conninfo(db) ==
42-
"fallback_application_name='osm2pgsql' password='bar'");
42+
CHECK(build_conninfo(db) == "fallback_application_name='osm2pgsql' "
43+
"client_encoding='UTF8' password='bar'");
4344
}
4445

4546
TEST_CASE("Connection info parsing with host", "[NoDB]")
4647
{
4748
database_options_t db;
4849
db.host = "bar";
49-
CHECK(build_conninfo(db) ==
50-
"fallback_application_name='osm2pgsql' host='bar'");
50+
CHECK(build_conninfo(db) == "fallback_application_name='osm2pgsql' "
51+
"client_encoding='UTF8' host='bar'");
5152
}
5253

5354
TEST_CASE("Connection info parsing with port", "[NoDB]")
5455
{
5556
database_options_t db;
5657
db.port = "bar";
57-
CHECK(build_conninfo(db) ==
58-
"fallback_application_name='osm2pgsql' port='bar'");
58+
CHECK(build_conninfo(db) == "fallback_application_name='osm2pgsql' "
59+
"client_encoding='UTF8' port='bar'");
5960
}
6061

6162
TEST_CASE("Connection info parsing with complete info", "[NoDB]")
@@ -67,6 +68,7 @@ TEST_CASE("Connection info parsing with complete info", "[NoDB]")
6768
db.host = "bzz";
6869
db.port = "123";
6970
CHECK(build_conninfo(db) ==
70-
"fallback_application_name='osm2pgsql' dbname='foo' "
71+
"fallback_application_name='osm2pgsql' client_encoding='UTF8' "
72+
"dbname='foo' "
7173
"user='bar' password='baz' host='bzz' port='123'");
7274
}

0 commit comments

Comments
 (0)