Я пытаюсь внести некоторые изменения в исходный код postgresql. Я хочу добавить флаг, который работает как в веб-интерфейсе, так и в бэкэнде. Вот что я сделал до сих пор.
1- Я создал свой заголовочный файл mine.h, в котором я объявил свой глобальный флаг следующим образом.
extern int CMD_FLAG;
extern void init_vars();// this function to initialize CMD_FLAG
2- Я включил mine.h в pgsql/src/include/ ch, так как он виден как внешним, так и внутренним интерфейсом.
3 - в pgsql/src/port/exec.c я написал тело функции init_vars(), которая инициализирует CMD_FLAG, следующим образом:
int CMD_FLAG;
void init_vars(){
CMD_FLAG =-1;
}
4- В pgsql/src/backend/main/main.c я позвонил
init_vars();
когда я скомпилировал Postgresql, я не получил никакой ошибки. Однако, когда я попытался напечатать значение флага, у него были разные значения в бэкэнде и во фронте.
Например, когда я напечатал его в функции "HandleSlashCmds", которая находится во внешнем интерфейсе, значение было 0, тогда как предполагалось, что оно будет -1.
Если я внесу какие-либо изменения в флаг в веб-интерфейсе, это изменение относится только к функциям веб-интерфейса. С другой стороны, если я сделаю какое-либо изменение в обратном флаге, это изменение относится только к внутренним функциям.
Я думаю, что как-то есть 2 копии флага по одному на каждом конце. Как сделать так, чтобы оба конца обращались к одному значению?