What you find is in initdb.c. Maybe the author want to make single quotes
escaped just the same as in SQL. But guc-file.l is unaware of it.
"Qingqing Zhou" <zhouqq@cs.toronto.edu> wrote
>
> Diff current version vs. some earlier version, you see this:
>
> /*
> * signal handler in case we are interrupted.
> @@ -1951,12 +2035,12 @@ escape_quotes(const char *src)
> {
> int len = strlen(src),
> i, j;
> - char *result = xmalloc(len * 2 + 1);
> + char *result = pg_malloc(len * 2 + 1);
>
> for (i = 0, j = 0; i < len; i++)
> {
> - if (src[i] == '\'' || src[i] == '\\')
> - result[j++] = '\\';
> + if (SQL_STR_DOUBLE(src[i]))
> + result[j++] = src[i];
> result[j++] = src[i];
> }
>
> So the problem is this line:
>
> result[j++] = src[i];
>
> That is, use the old line then the 'People\'s republic of China' string
gets
> right. But I am quite sure if revoke this will affect other things.
>
> Regards,
> Qingqing
>
>
>
>