22 messages in org.postgresql.pgsql-jdbcRe: Binary tx format for an array?
FromSent OnAttachments
Michael GuyverJun 21, 2006 10:26 am 
Dave CramerJun 21, 2006 12:55 pm 
Mark LewisJun 21, 2006 1:31 pm 
Tom LaneJun 21, 2006 3:40 pm 
Michael GuyverJun 22, 2006 1:16 am 
Tom LaneJun 22, 2006 9:54 am 
Mark LewisJun 22, 2006 12:15 pm 
Michael GuyverJun 23, 2006 1:22 am 
Dave CramerJun 23, 2006 4:43 am 
Markus SchaberJun 23, 2006 4:59 am 
Michael GuyverJun 23, 2006 5:46 am 
Dave CramerJun 23, 2006 5:56 am 
Dave CramerJun 23, 2006 6:16 am 
Tom LaneJun 23, 2006 9:18 am 
Mark LewisJun 23, 2006 1:31 pm 
Dave CramerJun 23, 2006 1:39 pm 
Kris JurkaJun 23, 2006 1:46 pm 
Mark LewisJun 23, 2006 1:59 pm 
Marc HerbertJul 10, 2006 2:19 am 
Mark LewisJul 10, 2006 9:18 am 
Marc HerbertJul 10, 2006 10:53 am 
Mark LewisJul 10, 2006 11:59 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Binary tx format for an array?Actions...
From:Michael Guyver (kene@googlemail.com)
Date:Jun 23, 2006 1:22:11 am
List:org.postgresql.pgsql-jdbc

On 22/06/06, Tom Lane <tg@sss.pgh.pa.us> wrote:

No, in the buffer they'll be in network (big-endian) byte order,

[0x00][0x00][0x00][0x17]

On 22/06/06, Mark Lewis <mark@mir3.com> wrote:

Java tried so hard to hide endianness from you that it didn't provide any real support for those times when you DO need to be aware of it. So the "convention" looks kind of like this (snipped from the PG JDBC driver):

public void SendInteger4(int val) throws IOException { SendChar((val >> 24)&255); SendChar((val >> 16)&255); SendChar((val >> 8)&255); SendChar(val&255); }

Of course that's right: I got myself confused.

Thanks very much for your help, no doubt I'll be back for some more (please sir) in the future.

I'm optimistic I'm on the right track but wanted to conceive a way of unit testing the different Java classes that represent PG types, and their binary Tx and Rx methods.

One way I thought of doing this is simply to send the values over JDBC (specifying binary parameters) and check the contents of a test table once all the inserts are done, but such unit tests get very messy very quickly, and you wind up storing your expected results in a different file, which is firstly something you have to keep in sync with the source code and secondly tends to grow and become unmanageable very quickly.

Another way would be to use the JNI mechanism to talk directly to the PG code, calling the xxxrecv() functions for the type you're testing, reading back the type's value using the xxxsend() method. Not being a C man, I'm not sure how easy this would be and would appreciate any suggestions.

Regards,

Michael