Re: how to add my source file?

Поиск
Список
Период
Сортировка
От dakotali kasap
Тема Re: how to add my source file?
Дата
Msg-id 354060.24913.qm@web31315.mail.mud.yahoo.com
обсуждение исходный текст
Ответ на Re: how to add my source file?  (Bruce Momjian <bruce@momjian.us>)
Список pgsql-hackers
Thanks a lot, it worked:) Actually, I have tried to include "postgres.h" before, but not at the top of the other
includes.<br/><br />regards,<br /><br />dakotali<br /><br /><b><i>Bruce Momjian <bruce@momjian.us></i></b>
wrote:<blockquoteclass="replbq" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left:
5px;"><br/>Ah, all *.c files must have this at the top before they include _any_<br />other files, including system
includefiles:<br /><br /> #include "postgres.h"<br /><br />You will see that all our backend files follow this rule.<br
/><br/>---------------------------------------------------------------------------<br /><br />dakotali kasap wrote:<br
/>>Sorry I did not want to bother you with the details, I just thought that there is smth that I have to do apart
fromadding the object file name into the Makefile.<br />> <br />> So, here is the whole picture:<br />> <br
/>><br />> I want to write a function that takes the raw parsetree and rewrites it according to my rules, then
producenew raw parsetrees.<br />> <br />> I will call this function inside backend/tcop/postgres.c . I wrote an
headerfile called my_rewriter.h and include this inside postgres.c.<br />> <br />> my_writer.h looks like:<br
/>>-------------------------------------------------<br />> #ifndef UWSDREWRITE_H<br />> #define
UWSDREWRITE_H<br/>> <br />> #include "nodes/pg_list.h"<br />> #include "nodes/nodes.h"<br />> <br />>
typedefstruct my_Projection<br />> {<br />> char *relname;<br />> List attnames;<br />> char
*result_relname;<br/>> <br />> } my_Projection;<br />> <br />> .<br />> .<br />> .<br />> <br
/>>extern void my_analyze(Node *parsetree);<br />> extern void my_rewrite(List *parsetree_list);<br />> <br
/>>#endif UWSDREWRITE_H<br />> ---------------------------------------------<br />> <br />> <br />>
my_writer.clooks like:<br />> -------------------------------------------------<br />> #include
"nodes/nodes.h"<br/>> #include <br />> #include "nodes/pg_list.h"<br />> <br />> <br />> static void
my_string_print(char*s);<br />> static void my_int_print(int i);<br />> <br />> static void
my_string_print(char*s)<br />> {<br />> FILE *outfile = fopen("/home/?/the_log.txt", "a");<br />>
fprintf(outfile,"\n%s\n",s);<br />> fflush(stdout);<br />> fclose(outfile);<br />> }<br />> <br />>
staticvoid my_int_print(int i)<br />> {<br />> FILE *outfile = fopen("/home/?/the_log.txt", "a");<br />>
fprintf(outfile,"\nthe int is: %d\n", i);<br />> fflush(stdout);<br />> fclose(outfile);<br />> }<br />>
<br/>> void UWSD_rewrite(List *parsetree_list)<br />> {<br />> ListCell *parsetree_item;<br />> <br />>
foreach(parsetree_item,parsetree_list)<br />> {<br />> Node *parsetree = (Node *) lfirst(parsetree_item);<br
/>>UWSD_analyze(parsetree);<br />> }<br />> }<br />> <br />> void UWSD_analyze(Node *parsetree)<br
/>>{<br />> if(nodeTag(parsetree)==T_SelectStmt)<br />> {<br />> my_string_print("THIS IS A SELECT
STMT");<br/>> }<br />> else my_int_print(nodeTag(parsetree));<br />> }<br />> <br />>
-----------------------------------------------------------<br/>> <br />> <br />> Then I wrote a C file called
my_writer.c,and do the implementation of my_analyze(Node *parsetree) and my_rewrite(List *parsetree_list) functions. I
needNode and List structures here, but when I include the necessary header files (#include "nodes/pg_list.h", #include
"nodes/nodes.h"),I got errors at compile time like:<br />> <br />> ---------------------------------------<br
/>>../../../src/include/nodes/nodes.h:359: error: syntax error before ?Node?<br />>
../../../src/include/nodes/nodes.h:398:error: syntax error before ?equal?<br />>
../../../src/include/nodes/nodes.h:398:warning: type defaults to ?int? in declaration of ?equal?<br />>
../../../src/include/nodes/nodes.h:398:warning: data definition has no type or storage class<br />>
----------------------------------------<br/>> <br />> I added the object file my_writer.o to the Makefile inside
backend/parser/Makefileand configured again, but it did not work, what else should I do?<br />> <br />>
regards,<br/>> <br />> dakotali<br />> <br />> <br />> <br />> Andrew Dunstan  wrote: dakotali kasap
wrote:<br/>> > Hi,<br />> ><br />> > I have one source and one header file which are called
my_writer.hand <br />> > my_writer.c. I included my_writer.h inside postgres.c and do the <br />> >
implementationof declared functions inside my_writer.c. When I <br />> > include, some other header files of
postgresql(like nodes/pg_list.h <br />> > or nodes/nodes.h) in my_writer.c, it gives me compile errors that are
<br/>> > related with these header files of postgresql, although there is no <br />> > problem.<br />>
><br/>> > Do you know why?<br />> ><br />> <br />> We're not magicians, nor mindreaders. Unless
yougive us enough <br />> information we can't possibly guess. At the very least you need to show <br />> us what
theoffending code is and what the compiler error is.<br />> <br />> cheers<br />> <br />> andrew<br />>
<br/>> <br />> __________________________________________________<br />> Do You Yahoo!?<br />> Tired of
spam?Yahoo! Mail has the best spam protection around <br />> http://mail.yahoo.com <br />-- <br /> Bruce Momjian
bruce@momjian.us<br/> EnterpriseDB http://www.enterprisedb.com<br /><br /> + If your life is a hard drive, Christ can
beyour backup. +<br /><br />---------------------------(end of broadcast)---------------------------<br />TIP 5: don't
forgetto increase your free space map settings<br /></blockquote><br /><p>
__________________________________________________<br/>Do You Yahoo!?<br />Tired of spam? Yahoo! Mail has the best spam
protectionaround <br />http://mail.yahoo.com  

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: how to add my source file?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [PATCHES] [BUGS] BUG #2846: inconsistent and confusing handling of