On Apr 20, 2009, at 5:23 PM, Daniel Verite wrote:
> mailtest=> \set e '\'\12\15\107\20\'::bytea'
> mailtest=> select get_byte(:e,0),get_byte(:e,1),get_byte(:e,
> get_byte | get_byte | get_byte | get_byte ----------+----------
> 10 | 13 | 71 | 16
That's what I ended up with. My first attempts at it were unsuccessful
because I did not notice that get_byte uses zero indexing. Earlier in
the routine I extracted bytes using substring and just assumed they
used the same indexing. They don't. It might be worthy of a
documentation note -- it seems easy to miss if you have not used the
binary functions before.
I generated the integer from the bytes using something like this:
b1 = get_byte(p_array, i+3);
b2 = get_byte(p_array, i+2);
b3 = get_byte(p_array, i+1);
b4 = get_byte(p_array, i);
val = (b1 << 24) + (b2 << 16) + (b3 << 8) + b4;
John DeSoi, Ph.D.
In response to
pgsql-general by date
|Next:||From: Albe Laurenz||Date: 2009-04-21 10:36:44|
|Subject: Re: trouble with to_char('L')|
|Previous:||From: Sam Mason||Date: 2009-04-21 01:13:58|
|Subject: Re: Doubt about join clause|