Re: Significant oversight in that #include-removal script
| От | Bruce Momjian |
|---|---|
| Тема | Re: Significant oversight in that #include-removal script |
| Дата | |
| Msg-id | 200901072131.n07LVOL19963@momjian.us обсуждение исходный текст |
| Ответ на | Significant oversight in that #include-removal script (Tom Lane <tgl@sss.pgh.pa.us>) |
| Ответы |
Re: Significant oversight in that #include-removal script
|
| Список | pgsql-hackers |
Tom Lane wrote: > I just noticed that optimizer/cost.h is not #include'd by plancat.c, > which is not too cool because the former has the extern declaration > for the constraint_exclusion global variable while the latter has > the actual definition. I didn't run it down in the CVS history to > make sure, but I imagine what happened is that your unnecessary-includes > script diked it out because the file still compiled warning-free without > that header, ie, there is no warning for "int foo;" not preceded by > "extern int foo;". This isn't real good because it would allow a global > variable to get out of sync with its declaration. Is there a way to > prevent such problems in future? The script certainly has no way to know it is missing an extern, and I am not sure how I would even teach it that trick. The example you saw was: src/include/optimizer/cost.h:55:extern bool constraint_exclusion; src/backend/optimizer/util/plancat.c:46:bool constraint_exclusion= false; The only clean way I can think of to fix this would be to have all the globals in a single C file that is included as part of postgres.h. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
В списке pgsql-hackers по дате отправления: