Re: [HACKERS] question on some code.

2005-07-19 Thread Korry






If I understand the code right, your trying to pass in to 
appendBinaryStringInfo an address or reference to the n8, n16, or n32 
variables and cast them so that a char * pointer can access that address 
space. Through some testing that I've been doing (outputting the values in 
the appendBinaryStringInfo function), I never seem to see any data, The 
variable pointer that references the n8, n16, or n32 value is not holding 
any data in the appendBinaryStringInfo function.



How are you looking at the data? If you're treating the pointer as if it were a null-terminated string, it's likely that the first byte is a null character much of the time. Since this is binary data (not character data), you'll need to look at the individual bytes. If you're using gdb, use 'x' command instead of the 'p' command. If you've thrown a printf() into the code, you can't use a %s format specifier, you'll have to look at the bytes one at a time using something like %02X.


 -- Korry




Re: [HACKERS] question on some code.

2005-07-19 Thread Tom Lane
Chris Bowlby [EMAIL PROTECTED] writes:
 I understand the concept of the code, to append binary values to a string 
 buffer (char *), but, under my compiler on FreeBSD 5.4.x (gcc (GCC) 3.4.2 
 [FreeBSD] 20040728) I see a few issues that have cropped up.

You've got a broken compiler then, because it certainly works for
everyone else.  That function's been substantially unchanged since
... hmm ... version 1.1 of pqformat.c dated 25 Apr 1999.  And I'm
fairly sure that I got it from some older code rather than writing
it from scratch when I made that file.

 Through some testing that I've been doing (outputting the values in 
 the appendBinaryStringInfo function), I never seem to see any data, The 
 variable pointer that references the n8, n16, or n32 value is not holding 
 any data in the appendBinaryStringInfo function.

Define never seem to see any data...

regards, tom lane

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] question on some code.

2005-07-19 Thread Chris Bowlby
Ahh, so it's not attempting to turn it into an acsii string, just storing 
raw binary data... Ok that makes sense now, thanks for the help.


At 02:54 PM 7/19/2005, Korry wrote:



If I understand the code right, your trying to pass in to
appendBinaryStringInfo an address or reference to the n8, n16, or n32
variables and cast them so that a char * pointer can access that address
space. Through some testing that I've been doing (outputting the values in
the appendBinaryStringInfo function), I never seem to see any data, The
variable pointer that references the n8, n16, or n32 value is not holding
any data in the appendBinaryStringInfo function.


How are you looking at the data?  If you're treating the pointer as if it 
were a null-terminated string, it's likely that the first byte is a null 
character much of the time.  Since this is binary data (not character 
data), you'll need to look at the individual bytes.  If you're using gdb, 
use 'x' command instead of the 'p' command.  If you've thrown a printf() 
into the code, you can't use a %s format specifier, you'll have to look 
at the bytes one at a time using something like %02X.



-- Korry




---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] question on some code.

2005-07-19 Thread Chris Bowlby

Hi Tom,

 good to hear from you. It was my miss-understanding of what the code was 
doing, not the issue with the compiler :


At 03:22 PM 7/19/2005, Tom Lane wrote:

Chris Bowlby [EMAIL PROTECTED] writes:
 I understand the concept of the code, to append binary values to a string
 buffer (char *), but, under my compiler on FreeBSD 5.4.x (gcc (GCC) 3.4.2
 [FreeBSD] 20040728) I see a few issues that have cropped up.

You've got a broken compiler then, because it certainly works for
everyone else.  That function's been substantially unchanged since
... hmm ... version 1.1 of pqformat.c dated 25 Apr 1999.  And I'm
fairly sure that I got it from some older code rather than writing
it from scratch when I made that file.

 Through some testing that I've been doing (outputting the values in
 the appendBinaryStringInfo function), I never seem to see any data, The
 variable pointer that references the n8, n16, or n32 value is not 
holding

 any data in the appendBinaryStringInfo function.

Define never seem to see any data...

regards, tom lane




---(end of broadcast)---
TIP 6: explain analyze is your friend