Re: [HACKERS] Function call hierarchy/path since getting the buffer until access its data

2012-05-30 Thread Waldecir Faria

Thank you for the reply Robert. I think I am getting the idea about reading 
buffers but I am confused about the writing part, can you give me a function 
name where it does some write operations like creating a table or inserting a 
tuple for me read as a example.

Best Regards ,
-Waldecir 

 Date: Tue, 29 May 2012 11:33:59 -0400
 Subject: Re: [HACKERS] Function call hierarchy/path since getting the buffer 
 until access its data
 From: robertmh...@gmail.com
 To: fighter2...@hotmail.com
 CC: pgsql-hackers@postgresql.org
 
 On Mon, May 28, 2012 at 8:15 AM, Waldecir Faria fighter2...@hotmail.com 
 wrote:
  Good morning, I am doing a study about buffer management to improve the
  performance of one program that does heavy I/O operations. After looking and
  reading from different softwares' source codes/texts one friend suggested me
  to take a look at the PostgreSQL code. I already took a look at the
  PostgreSQL buffer management modules ( freelist.c and cia ) but now I am a
  bit confused how the buffer read/write works, I tried to see how PostgreSQL
  does to get, for example, a char array from one buffer. Looking at rawpage.c
  I think that I found a good example using the following function calls
  sequence starting at function get_raw_page_internal():
 
  StrategyGetBuffer-BufferAlloc-ReadBuffer_Common
  -ReadBufferExtended-BufferGetPage- memcpy page to buf
 
 BufferGetPage() doesn't copy anything; it just takes the buffer number
 and returns a pointer to the address of that buffer in memory.  More
 generally, that whole chain of function calls has to do with how a
 page ends up inside PostgreSQL's buffer cache, not with how anything
 on the page is actually decoded.  Each buffer contains zero or more
 tuples; each tuple contains multiple attributes.  So after you get the
 buffer you have to iterate over the tuples and then decode each tuple
 to get the values that you want.
 
 -- 
 Robert Haas
 EnterpriseDB: http://www.enterprisedb.com
 The Enterprise PostgreSQL Company
 
 -- 
 Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
 To make changes to your subscription:
 http://www.postgresql.org/mailpref/pgsql-hackers
  

Re: [HACKERS] Function call hierarchy/path since getting the buffer until access its data

2012-05-30 Thread Robert Haas
On Wed, May 30, 2012 at 9:37 AM, Waldecir Faria fighter2...@hotmail.com wrote:
 Thank you for the reply Robert. I think I am getting the idea about reading
 buffers but I am confused about the writing part, can you give me a function
 name where it does some write operations like creating a table or inserting
 a tuple for me read as a example.

heap_insert might be a good place to start.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] Function call hierarchy/path since getting the buffer until access its data

2012-05-29 Thread Robert Haas
On Mon, May 28, 2012 at 8:15 AM, Waldecir Faria fighter2...@hotmail.com wrote:
 Good morning, I am doing a study about buffer management to improve the
 performance of one program that does heavy I/O operations. After looking and
 reading from different softwares' source codes/texts one friend suggested me
 to take a look at the PostgreSQL code. I already took a look at the
 PostgreSQL buffer management modules ( freelist.c and cia ) but now I am a
 bit confused how the buffer read/write works, I tried to see how PostgreSQL
 does to get, for example, a char array from one buffer. Looking at rawpage.c
 I think that I found a good example using the following function calls
 sequence starting at function get_raw_page_internal():

 StrategyGetBuffer-BufferAlloc-ReadBuffer_Common
 -ReadBufferExtended-BufferGetPage- memcpy page to buf

BufferGetPage() doesn't copy anything; it just takes the buffer number
and returns a pointer to the address of that buffer in memory.  More
generally, that whole chain of function calls has to do with how a
page ends up inside PostgreSQL's buffer cache, not with how anything
on the page is actually decoded.  Each buffer contains zero or more
tuples; each tuple contains multiple attributes.  So after you get the
buffer you have to iterate over the tuples and then decode each tuple
to get the values that you want.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers