Re: [HACKERS] I am confused after reading codes of PostgreSQL three week

2011-03-20 Thread Martijn van Oosterhout
On Sun, Mar 20, 2011 at 11:50:01AM +0800, hom wrote:
 I trace into scan.c because I want to known how the paser tree is
 built and I debug the source step by step.
 Then the eclipse pick up the scan.I and the excute order does not
 match the code.

Umm, the scanners produced by flex and bison are huge table driven
parsers, which makes following what is happening in terms of parse
tree extremely difficult to follow.

If you want to follow what's happening, see the following page:

http://dinosaur.compilertools.net/bison/bison_11.html

Which will cause the parser to dump what it's doing. As the page says,
stepping through the processed file reveals little, becuase it's the
same code being executed over and over again, only the variables
change.

Have a nice day,
-- 
Martijn van Oosterhout   klep...@svana.org   http://svana.org/kleptog/
 Patriotism is when love of your own people comes first; nationalism,
 when hate for people other than your own comes first. 
   - Charles de Gaulle


signature.asc
Description: Digital signature


Re: [HACKERS] I am confused after reading codes of PostgreSQL three week

2011-03-20 Thread Nicolas Barbier
2011/3/20 hom obsidian...@gmail.com:

 I trace into scan.c because I want to known how the paser tree is
 built and I debug the source step by step.

I suggest you learn how flex/bison work first. The contents of the *.c
files generated by flex/bison are not generally supposed to be
interpreted by humans, rather you should read their original sources
(*.l and *.y).

 Then the eclipse pick up the scan.I and the excute order does not
 match the code.

Eclipse seems to understand that any code corresponding to the
generated .c file actually originates in the .l file, but apparently
fails to match (some of?) the line numbers. OTOH, I cannot really
imagine how it is supposed to match them as long as you are not
executing lines that are literally copied from the .l file (e.g., as
long as the lexer or parser code itself is being executed), so that
may be normal.

Again: Do not try to read the generated .c files, but rather read the
corresponding .l and .y files. The tarballs may include those
generated .c files, but as you will find out when checking out the
repository itself, they are not really considered source (i.e., they
are not included). When debugging, skip over the lexer and parser code
itself, just put your breakpoints in the C code in the .l and .y files
(I hope Eclipse might match *those* line numbers a least, and make the
breakpoints work).

Nicolas

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-20 Thread hom
2011/3/20 Martijn van Oosterhout klep...@svana.org:
 On Sun, Mar 20, 2011 at 11:50:01AM +0800, hom wrote:
 I trace into scan.c because I want to known how the paser tree is
 built and I debug the source step by step.
 Then the eclipse pick up the scan.I and the excute order does not
 match the code.

 Umm, the scanners produced by flex and bison are huge table driven
 parsers, which makes following what is happening in terms of parse
 tree extremely difficult to follow.

 If you want to follow what's happening, see the following page:

 http://dinosaur.compilertools.net/bison/bison_11.html

 Which will cause the parser to dump what it's doing. As the page says,
 stepping through the processed file reveals little, becuase it's the
 same code being executed over and over again, only the variables
 change.

 Have a nice day,
 --
 Martijn van Oosterhout   klep...@svana.org   http://svana.org/kleptog/
 Patriotism is when love of your own people comes first; nationalism,
 when hate for people other than your own comes first.
                                       - Charles de Gaulle

 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.9 (GNU/Linux)

 iD8DBQFNhdIqIB7bNG8LQkwRAoMeAJsG3Z1reT2E04fy+sFvA2izfXOX3gCfbxhN
 fra+WGq65WMfNlmFa9NGktU=
 =3kpG
 -END PGP SIGNATURE-



Thanks Martijn.
I am trying lex and yacc on my Linux. :)


-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-20 Thread hom
2011/3/20 Nicolas Barbier nicolas.barb...@gmail.com:
 2011/3/20 hom obsidian...@gmail.com:

 I trace into scan.c because I want to known how the paser tree is
 built and I debug the source step by step.

 I suggest you learn how flex/bison work first. The contents of the *.c
 files generated by flex/bison are not generally supposed to be
 interpreted by humans, rather you should read their original sources
 (*.l and *.y).

 Then the eclipse pick up the scan.I and the excute order does not
 match the code.

 Eclipse seems to understand that any code corresponding to the
 generated .c file actually originates in the .l file, but apparently
 fails to match (some of?) the line numbers. OTOH, I cannot really
 imagine how it is supposed to match them as long as you are not
 executing lines that are literally copied from the .l file (e.g., as
 long as the lexer or parser code itself is being executed), so that
 may be normal.

 Again: Do not try to read the generated .c files, but rather read the
 corresponding .l and .y files. The tarballs may include those
 generated .c files, but as you will find out when checking out the
 repository itself, they are not really considered source (i.e., they
 are not included). When debugging, skip over the lexer and parser code
 itself, just put your breakpoints in the C code in the .l and .y files
 (I hope Eclipse might match *those* line numbers a least, and make the
 breakpoints work).

 Nicolas


Thanks Nicolas.
I put breakpoints in scan.I but it doesn't work sometime.
but it doesn't matter. I plan to spend more time on mmgr, storage, access. :)


-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-19 Thread hom
2011/3/19 Vaibhav Kaushal vaibhavkaushal...@gmail.com:
 Hello hom,

 Frankly I am a learner as well. The experts here are almost always ready
 to help and would be a better source of information.

 Moreover I am also using eclipse but I do not use it for building the
 source. I use it only as a source code browser (its easy in GUI; isn't
 it? ). I am trying to learn about the executor so can't say much about
 the parser. However I suppose that you must be knowing the rules of the
 tools flex and bison to understand the parser. And why are you into
 scan.c? It is created by flex dear. Read the scan.l and gram.y instead.
 It is these files which are responsible for the major work done by the
 parser.

 If you are keen about the parser, go learn lex and yacc (or flex and
 bison ... they are almost the same) and then go through the scan.l and
 gram.y files. It is actually an _extremely_ tough job to read the
 generated files. Once again, do turn off the Search for duplicate
 source files option. There are no duplicate files in the source tree.

 Also, if you are using the copy of source tree which was built once in
 the workspace, things can be a little different.

 @others: Well, I do know that there are a few books in the market
 written by the devs but how much does it help when I am already banging
 my head into source since last 5 months?


 Regards,
 Vaibhav


Thanks Vaibhav.

I trace into scan.c because I want to known how the paser tree is
built and I debug the source step by step.
Then the eclipse pick up the scan.I and the excute order does not
match the code.

Actually, I have no idea which module of the source I should read first.
I have a quick glance at the source and I known a litter about how a
query excutes.
But the modules are so connected. I don't known what part I should be deep in.

Now, I plan to study deep in mmgr. Will it be suitable?

-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread Markus Wanner
Hom,

On 03/17/2011 04:49 PM, Kevin Grittner wrote:
 That's ambitious.

Absolutely, yes.  Exercise patience with yourself.

A method that hasn't been mentioned, yet, is digging out your debugger
and attach it to a connected Postgres backend.  You can then issue a
query you are interested in and follow the backend doing its work.

That's particularly helpful in trying to find a certain spot of
interest.  Of course, it doesn't help much in getting the big picture.

Good luck on your journey through the code base.

Regards

Markus Wanner

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread Brendan Jurd
On 18 March 2011 01:57, hom obsidian...@gmail.com wrote:
  I try to known how a database is implemented

This objective is so vast and so vague that it's difficult to give
meaningful help.

I'd emphasise Kevin Grittner's very worthwhile advice.  Try to break
your question down into smaller, more specific ones.  With a question
like how does postgres work you're likely to flounder.  But with a
more targeted question, e.g., what format does postgres use to save
data to disk or how does postgres implement ORDER BY, you can make
easier progress, and perhaps you could get more useful pointers from
the people on this list.

Have you read through the Overview of System Internals chapter in
the documentation [1]?  Perhaps it will help you identify the areas
you wish to explore further, and form more specific questions.

[1] http://www.postgresql.org/docs/current/static/overview.html

Cheers,
BJ

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread Vaibhav Kaushal
Hi,

That was the question I was facing 5 months ago and trust me I am doing it
even now. With an average of 6+ hours going into PostgreSQL Code, even with
best practices (as suggested by the developers) I still think I know less
than 10 percent. It is too huge to be swallowed at once.

I too had to break it down into pieces and because everything is so
interconnected with everything else, it is quite complicated in the
beginning. Start with one piece; planner, parser, executor, storage
management whatever and slowly it should help you get the bigger picture.

regards,
Vaibhav

I had to break it into

On Fri, Mar 18, 2011 at 3:39 PM, Brendan Jurd dire...@gmail.com wrote:

 On 18 March 2011 01:57, hom obsidian...@gmail.com wrote:
   I try to known how a database is implemented

 This objective is so vast and so vague that it's difficult to give
 meaningful help.

 I'd emphasise Kevin Grittner's very worthwhile advice.  Try to break
 your question down into smaller, more specific ones.  With a question
 like how does postgres work you're likely to flounder.  But with a
 more targeted question, e.g., what format does postgres use to save
 data to disk or how does postgres implement ORDER BY, you can make
 easier progress, and perhaps you could get more useful pointers from
 the people on this list.

 Have you read through the Overview of System Internals chapter in
 the documentation [1]?  Perhaps it will help you identify the areas
 you wish to explore further, and form more specific questions.

 [1] http://www.postgresql.org/docs/current/static/overview.html

 Cheers,
 BJ

 --
 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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread hom
2011/3/17 Bruce Momjian br...@momjian.us:
 hom wrote:
 Hi,

   I try to known how a database is implemented and I have been reading
 PG source codes for a month.

 Now, I only know a little about how PG work.  :(

 I just know PG work like this but I don't know why PG work like this.  :(  :(

 even worse, I feel I can better understand the source code. it may be
 that I could't split the large module into small piece which may help
 to understand.

 Is there any article or some way could help understand the source code ?

 I assume you have looked at these places:

        http://wiki.postgresql.org/wiki/Developer_FAQ
        http://www.postgresql.org/developer/coding

 --
  Bruce Momjian  br...@momjian.us        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +


Thanks Bruce.
I am also reading your book PostgreSQL Introduction and Concepts. :)

-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread hom
2011/3/17 Kevin Grittner kevin.gritt...@wicourts.gov:
 hom obsidian...@gmail.com wrote:

 I try to known how a database is implemented and I have been
 reading PG source codes for a month.

 That's ambitious.

 find -name '*.h' -or -name '*.c' \
  | egrep -v '^\./src/test/.+/tmp_check/' \
  | xargs cat | wc -l
 1059144

 Depending on how you do the math, that's about 50,000 lines of code
 per day to get through it in the time you mention.

 Is there any article or some way could help understand the source
 code ?

 Your best bet would be to follow links from the Developers tab on
 the main PostgreSQL web site:

 http://www.postgresql.org/developer/

 In particular the Developer FAQ page:

 http://wiki.postgresql.org/wiki/Developer_FAQ

 And the Coding links:

 http://www.postgresql.org/developer/coding

 may help.

 Before reading code in a directory, be sure to read any README
 file(s) in that directory carefully.

 It helps to read this list.

 In spite of reviewing all of that myself, it was rather intimidating
 when I went to work on a major patch 14 months ago.  Robert Haas
 offered some good advice which served me well in that effort --
 divide the effort in to a series of incremental steps, each of which
 deals with a small enough portion of the code to get your head
 around.  As you work in any one narrow area, it becomes increasingly
 clear; with that as a base you can expand your scope.

 When you're working in the code, it is tremendously helpful to use
 an editor with ctags support (or similar IDE functionality).

 I hope this is helpful.  Good luck.

 -Kevin


Thanks Kevin.
I will follow your advice and I will also post the question to the
mail list for help.
Thanks a lot.

-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread hom
2011/3/18 Markus Wanner mar...@bluegap.ch:
 Hom,

 On 03/17/2011 04:49 PM, Kevin Grittner wrote:
 That's ambitious.

 Absolutely, yes.  Exercise patience with yourself.

 A method that hasn't been mentioned, yet, is digging out your debugger
 and attach it to a connected Postgres backend.  You can then issue a
 query you are interested in and follow the backend doing its work.

 That's particularly helpful in trying to find a certain spot of
 interest.  Of course, it doesn't help much in getting the big picture.

 Good luck on your journey through the code base.

 Regards

 Markus Wanner


Thanks Markus.
It's hard time at the beginning.
I should keep patient. :)

-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread hom
2011/3/18 Brendan Jurd dire...@gmail.com:
 On 18 March 2011 01:57, hom obsidian...@gmail.com wrote:
  I try to known how a database is implemented

 This objective is so vast and so vague that it's difficult to give
 meaningful help.

 I'd emphasise Kevin Grittner's very worthwhile advice.  Try to break
 your question down into smaller, more specific ones.  With a question
 like how does postgres work you're likely to flounder.  But with a
 more targeted question, e.g., what format does postgres use to save
 data to disk or how does postgres implement ORDER BY, you can make
 easier progress, and perhaps you could get more useful pointers from
 the people on this list.

 Have you read through the Overview of System Internals chapter in
 the documentation [1]?  Perhaps it will help you identify the areas
 you wish to explore further, and form more specific questions.

 [1] http://www.postgresql.org/docs/current/static/overview.html

 Cheers,
 BJ


Thanks Brendan.
I have a quickly glance on Overview of System Internals  before.
I think it is time to read it again.

-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread hom
2011/3/18 Vaibhav Kaushal vaibhavkaushal...@gmail.com:
 Hi,
 That was the question I was facing 5 months ago and trust me I am doing it
 even now. With an average of 6+ hours going into PostgreSQL Code, even with
 best practices (as suggested by the developers) I still think I know less
 than 10 percent. It is too huge to be swallowed at once.
 I too had to break it down into pieces and because everything is so
 interconnected with everything else, it is quite complicated in the
 beginning. Start with one piece; planner, parser, executor, storage
 management whatever and slowly it should help you get the bigger picture.
 regards,
 Vaibhav
 I had to break it into

Thanks Vaibhav .
I have step into parser before but I meet a problem:

when I debug step in the scanner_init(),  Eclipse always finds scan.l
and the excute order is not match the file.
I think it should be scan.c actually but I don't known how to trace
into scan.c :(
PS: I have turn Search for duplicate source files option on.

I have posted to the mail list, but it have not solved.

here is the link:
http://postgresql.1045698.n5.nabble.com/Open-unmatch-source-file-when-step-into-parse-analyze-in-Eclipse-td3408033.html

-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-18 Thread Vaibhav Kaushal
Hello hom,

Frankly I am a learner as well. The experts here are almost always ready
to help and would be a better source of information. 

Moreover I am also using eclipse but I do not use it for building the
source. I use it only as a source code browser (its easy in GUI; isn't
it? ). I am trying to learn about the executor so can't say much about
the parser. However I suppose that you must be knowing the rules of the
tools flex and bison to understand the parser. And why are you into
scan.c? It is created by flex dear. Read the scan.l and gram.y instead.
It is these files which are responsible for the major work done by the
parser. 

If you are keen about the parser, go learn lex and yacc (or flex and
bison ... they are almost the same) and then go through the scan.l and
gram.y files. It is actually an _extremely_ tough job to read the
generated files. Once again, do turn off the Search for duplicate
source files option. There are no duplicate files in the source tree.

Also, if you are using the copy of source tree which was built once in
the workspace, things can be a little different.

@others: Well, I do know that there are a few books in the market
written by the devs but how much does it help when I am already banging
my head into source since last 5 months? 


Regards,
Vaibhav



On Fri, 2011-03-18 at 22:44 +0800, hom wrote:
 2011/3/18 Vaibhav Kaushal vaibhavkaushal...@gmail.com:
  Hi,
  That was the question I was facing 5 months ago and trust me I am doing it
  even now. With an average of 6+ hours going into PostgreSQL Code, even with
  best practices (as suggested by the developers) I still think I know less
  than 10 percent. It is too huge to be swallowed at once.
  I too had to break it down into pieces and because everything is so
  interconnected with everything else, it is quite complicated in the
  beginning. Start with one piece; planner, parser, executor, storage
  management whatever and slowly it should help you get the bigger picture.
  regards,
  Vaibhav
  I had to break it into
 
 Thanks Vaibhav .
 I have step into parser before but I meet a problem:
 
 when I debug step in the scanner_init(),  Eclipse always finds scan.l
 and the excute order is not match the file.
 I think it should be scan.c actually but I don't known how to trace
 into scan.c :(
 PS: I have turn Search for duplicate source files option on.
 
 I have posted to the mail list, but it have not solved.
 
 here is the link:
 http://postgresql.1045698.n5.nabble.com/Open-unmatch-source-file-when-step-into-parse-analyze-in-Eclipse-td3408033.html
 



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


[HACKERS] I am confused after reading codes of PostgreSQL three week

2011-03-17 Thread hom
Hi,

  I try to known how a database is implemented and I have been reading
PG source codes for a month.

Now, I only know a little about how PG work.  :(

I just know PG work like this but I don't know why PG work like this.  :(  :(

even worse, I feel I can better understand the source code. it may be
that I could't split the large module into small piece which may help
to understand.

Is there any article or some way could help understand the source code ?

Thanks for help ~

-- 
Best Wishes!

                                     hom

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-17 Thread Bruce Momjian
hom wrote:
 Hi,
 
   I try to known how a database is implemented and I have been reading
 PG source codes for a month.
 
 Now, I only know a little about how PG work.  :(
 
 I just know PG work like this but I don't know why PG work like this.  :(  :(
 
 even worse, I feel I can better understand the source code. it may be
 that I could't split the large module into small piece which may help
 to understand.
 
 Is there any article or some way could help understand the source code ?

I assume you have looked at these places:

http://wiki.postgresql.org/wiki/Developer_FAQ
http://www.postgresql.org/developer/coding

-- 
  Bruce Momjian  br...@momjian.ushttp://momjian.us
  EnterpriseDB http://enterprisedb.com

  + It's impossible for everything to be true. +

-- 
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] I am confused after reading codes of PostgreSQL three week

2011-03-17 Thread Kevin Grittner
hom obsidian...@gmail.com wrote:
 
 I try to known how a database is implemented and I have been
 reading PG source codes for a month.
 
That's ambitious.
 
find -name '*.h' -or -name '*.c' \
  | egrep -v '^\./src/test/.+/tmp_check/' \
  | xargs cat | wc -l
1059144
 
Depending on how you do the math, that's about 50,000 lines of code
per day to get through it in the time you mention.
 
 Is there any article or some way could help understand the source
 code ?
 
Your best bet would be to follow links from the Developers tab on
the main PostgreSQL web site:
 
http://www.postgresql.org/developer/
 
In particular the Developer FAQ page:
 
http://wiki.postgresql.org/wiki/Developer_FAQ
 
And the Coding links:
 
http://www.postgresql.org/developer/coding
 
may help.
 
Before reading code in a directory, be sure to read any README
file(s) in that directory carefully.
 
It helps to read this list.
 
In spite of reviewing all of that myself, it was rather intimidating
when I went to work on a major patch 14 months ago.  Robert Haas
offered some good advice which served me well in that effort --
divide the effort in to a series of incremental steps, each of which
deals with a small enough portion of the code to get your head
around.  As you work in any one narrow area, it becomes increasingly
clear; with that as a base you can expand your scope.
 
When you're working in the code, it is tremendously helpful to use
an editor with ctags support (or similar IDE functionality).
 
I hope this is helpful.  Good luck.
 
-Kevin

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