Hi,
I have a patch for Glorp(DBX)
PostgreSQL to support the newer bytea hex format (see
file:///usr/local/pgsql/share/doc/html/datatype-binary.html#AEN5037). I
can't write to the repository, so here it is:
PostgreSQLPlatform>>#convertSQLStringToByteArray:
aString for: aType
aString isNil ifTrue: [ ^ nil ].
^ (aString
beginsWith: '\x')
ifTrue: [ self convertHexSQLStringToByteArray:
aString ]
ifFalse: [ self convertEscapeSQLStringToByteArray:
aString ]
PostgreSQLPlatform>>#convertEscapeSQLStringToByteArray:
aString
| aStream str |
aStream := (ByteArray new: aString
size // 4) writeStream.
str := aString readStream.
[str atEnd]
whileFalse: [ |nextChar|
nextChar := str next.
aStream
nextPut: (nextChar = $\
ifTrue: [str peek = $\
ifTrue: [str next asInteger]
ifFalse: [Number readFrom:
(str next: 3) base: 8]]
ifFalse: [nextChar asInteger])
].
aStream close.
^aStream contents
PostgreSQLPlatform>>#convertHexSQLStringToByteArray:
aString
^ ByteArray
new: (aString size // 2) - 1
streamContents: [ :out | | in |
(in := aString readStream) skip:
2.
[ in atEnd ] whileFalse: [
out nextPut: (Number
readFrom: (in next: 2) base: 16) ] ]
#convertEscapeSQLStringToByteArray:
is the old code, unmodified; #convertHexSQLStringToByteArray: is new.
This
might be of use upstream as well, I don't really know.
If it
would help, I could save this as an MC package somewhere.
Regards,
Sven