Discussion:
[ADMIN] How and when are encoding DLLs used on Windows?
(too old to reply)
David Schnur
2011-11-16 16:04:59 UTC
Permalink
I bundle Postgres (8.3.15) with another product as a back-end database. On
Windows, the default build includes a bunch of what appear to be codec
libraries, with names like, utf8_and_cyrillic.dll, ascii_and_mic.dll, etc.
But using Microsoft's dependency walker tool, I see no references to any
of these in libpq.dll, psql, postgres or initdb.

So I'm wondering what these are used for, what executable or library ends
up loading them, and when/how exactly this happens. I'd like to know
whether they're actually necessary, since we could save some space in our
installer by omitting them.
Tom Lane
2011-11-16 23:57:57 UTC
Permalink
Post by David Schnur
I bundle Postgres (8.3.15) with another product as a back-end database. On
Windows, the default build includes a bunch of what appear to be codec
libraries, with names like, utf8_and_cyrillic.dll, ascii_and_mic.dll, etc.
But using Microsoft's dependency walker tool, I see no references to any
of these in libpq.dll, psql, postgres or initdb.
So I'm wondering what these are used for, what executable or library ends
up loading them, and when/how exactly this happens.
They're used for character set encoding conversions, eg when
database_encoding = UTF8 and client_encoding = LATIN1 (or any other
non-identical combination).
Post by David Schnur
I'd like to know
whether they're actually necessary, since we could save some space in our
installer by omitting them.
AFAIR, the system will function without 'em ... until you try to set
client_encoding different from database_encoding. Removing that
functionality doesn't seem like a good idea to me, but if you know the
needs of your userbase precisely, maybe you could get away with it.

regards, tom lane
--
Sent via pgsql-admin mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
Craig Ringer
2011-11-17 02:28:37 UTC
Permalink
Post by David Schnur
I bundle Postgres (8.3.15) with another product as a back-end database.
On Windows, the default build includes a bunch of what appear to be
codec libraries, with names like,
utf8_and_cyrillic.dll, ascii_and_mic.dll, etc. But using Microsoft's
dependency walker tool, I see no references to any of these in
libpq.dll, psql, postgres or initdb.
They're loaded by LoadLibrary calls. You'll see that the names do appear
in the server executable as strings.

The PL libraries and contrib libraries are similar, in that you won't
see direct dependencies but they'll still get used via LoadLibrary if
your database calls for them.

--
Craig Ringer
--
Sent via pgsql-admin mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin
David Schnur
2011-11-21 18:54:51 UTC
Permalink
Post by Tom Lane
They're used for character set encoding conversions, eg when
database_encoding = UTF8 and client_encoding = LATIN1 (or any other
non-identical combination).
Thanks, Tom and Craig; that makes perfect sense. I'd rather not assume
anything about the client encoding, but I do know that the server encoding
will always be UTF8. Am I correct, then, in thinking that I only need the
conversion procs whose names start with utf8_and...?

(I wrote this response a few days ago, but realized that I forgot to
reply-all to the list)

Loading...