Обсуждение: Doubt in parser

Поиск
Список
Период
Сортировка

Doubt in parser

От
Dhanaraj
Дата:
hi

currently i looking at the postgres src code. I saw the scanner and 
parser implemetations at two different places (src/backend/parser/  and  
/src/bakend/bootstrp). Can anybody tell me the purpose of having two 
phases?? or will this help to parse the queries at different levels?

Thanks
Dhanaraj


Re: Doubt in parser

От
Martijn van Oosterhout
Дата:
On Thu, Feb 16, 2006 at 06:07:25PM +0530, Dhanaraj wrote:
> hi
>
> currently i looking at the postgres src code. I saw the scanner and
> parser implemetations at two different places (src/backend/parser/  and
> /src/bakend/bootstrp). Can anybody tell me the purpose of having two
> phases?? or will this help to parse the queries at different levels?

The first one is the actual parser for queries you send. The latter is
the bootstrap parser which is only used during the inital bootstrap of
a database. It needs to be seperate because of things like the names of
columns are stored in a pg_attribute, yet how can you fill the table if
you don't know what the columns are called.

The latter is basically a glorified data loader to handle this special
case. It can't do queries or anything like that. You can basically
ignore it for normal development.

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> tool for doing 5% of the work and then sitting around waiting for someone
> else to do the other 95% so you can sue them.

Re: Doubt in parser

От
Alvaro Herrera
Дата:
Dhanaraj wrote:
> hi
> 
> currently i looking at the postgres src code. I saw the scanner and 
> parser implemetations at two different places (src/backend/parser/  and  
> /src/bakend/bootstrp). Can anybody tell me the purpose of having two 
> phases?? or will this help to parse the queries at different levels?

The bootstrap parser is using only in bootstrap mode, which is when the
template1 database is initially created.  It has a completely different
syntax than the main parser.

If what you are looking for is to implement a new command or modify an
existing one, ignore the bootstrap parser.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


Re: Doubt in parser

От
Michael Glaesemann
Дата:
On Feb 16, 2006, at 21:37 , Dhanaraj wrote:

> hi
>
> currently i looking at the postgres src code. I saw the scanner and  
> parser implemetations at two different places (src/backend/parser/   
> and  /src/bakend/bootstrp). Can anybody tell me the purpose of  
> having two phases?? or will this help to parse the queries at  
> different levels?

AFAIK, I don't think the code is exactly the same (though I haven't  
checked). The bootstrap code is used to get the PostgreSQL server  
started: there is a considerable amount of information stored in the  
system catalogs that the server needs to use. The server needs access  
to a scanner/parser to be able to read this information. The  
bootstrap code provides the server with enough knowledge to get  
started. The backend parser and scanner is more feature-filled.

Someone please feel free to step in and correct me if I'm off base :)

Michael Glaesemann
grzm myrealbox com





Re: Doubt in parser

От
Tom Lane
Дата:
Michael Glaesemann <grzm@myrealbox.com> writes:
> On Feb 16, 2006, at 21:37 , Dhanaraj wrote:
>> currently i looking at the postgres src code. I saw the scanner and  
>> parser implemetations at two different places (src/backend/parser/   
>> and  /src/bakend/bootstrp). Can anybody tell me the purpose of  
>> having two phases?? or will this help to parse the queries at  
>> different levels?

> AFAIK, I don't think the code is exactly the same (though I haven't  
> checked).

No, not even close.  The bootstrap parser reads the "bki" language
defined here:
http://developer.postgresql.org/docs/postgres/bki.html

"bki" is simple enough that it's hardly even worth using a bison parser
for, but someone did it that way so that's what we've got.
        regards, tom lane