logo       

Re: [plt-dev] pgsql package: msg#00094

plt-dev

Subject: Re: [plt-dev] pgsql package

Robby Findler wrote:
Thanks for the reply, Dave!

The encoding of my database is SQL_ASCII which, IIUC, means that the
bug really is in the SCheme code side for putting the data in one way
and expecting it to come out the other way.

The server has a communication encoding separate from the storage encodings of the actual databases. Communication should happen in UTF-8, and the server should convert data as necessary on storage and retrieval.

I don't suppose you (or anyone!) could recommend how this should work?
If I change the encoding to latin-1 and then change it to utf-8 and
then change it back to SQL_ASCII, woudl htat effectively translate the
entire database to utf-8?

I don't know if that would help anything.

---

Ryan said earlier that the line numbers I sent don't match up, but I'm
actually using version (2 3) of spgsql.plt so I was a bit surprised
about that. I'm using this package, specifically:

http://planet.plt-scheme.org/display.ss?package=spgsql.plt&owner=schematics

and I can see the utf-8 call in this file:

http://planet.plt-scheme.org/package-source/schematics/spgsql.plt/2/3/private/io.ss

and the latin-1 call in this file:

http://planet.plt-scheme.org/package-source/schematics/spgsql.plt/2/3/private/sql-data.ss

so that's another mystery that it would be nice to have resolved.

The occurrence of 'string->bytes/latin-1' in that file is for parsing PostgreSQL's bytea ("byte array") type. Seems like it's probably not getting that far before the error, though.

Is the contributor name stored as a bytea? Depending on how the server sends back binary data, that might be the problem.

Ryan


On Wed, Jul 29, 2009 at 10:26 AM, Dave Gurnell<d.j.gurnell@xxxxxxxxx> wrote:
Robby wrote:
Hi all (Ryan?): I've got a question about pgsql. From what I can tell,
string data is stored in the database in the latin-1 encoding
(sql-data.ss line 191), but is then retrieved from the database in the
utf-8 encoding (io.ss line 205). Am I getting that right?

This doesn't mean much, but I changed planet's copy of io.ss to use
bytes->string/latin-1 instead of bytes->string/utf-8, and I was able
to avoid crashing (but the latin-1 encoding might not have any
unencodable octets, so that isn't really saying too too much).
PostgreSQL lets you specify character encodings on a per-database and
per-client basis. The shell command:

psql -l

will show you your setting for each database on your server. The psql
command:

\encoding

will show you your client encoding for your current session. You can set
your client encoding using the psql command:

\encoding UTF8

I'm guessing backslash commands can also be sent over an SPGSQL
connection... you could try doing:

(send conn exec "\\encoding UTF8")

as soon as you connect. If that works, perhaps it's something that could be
rolled into SPGSQL's "connect" procedure?

Hope this helps,

-- Dave

_________________________________________________
For list-related administrative tasks:
http://list.cs.brown.edu/mailman/listinfo/plt-dev

_________________________________________________
For list-related administrative tasks:
http://list.cs.brown.edu/mailman/listinfo/plt-dev

_________________________________________________
For list-related administrative tasks:
http://list.cs.brown.edu/mailman/listinfo/plt-dev

Google Custom Search

News | Mail Home | sitemap | FAQ | advertise