fonte: https://git.postgresql.org/cgit/postgresql.git/tree/src/backend/optimizer/plan/planner.c
(gdb) n
3556 if (root->group_pathkeys)
(gdb) s
3558 else if (root->window_pathkeys)
(gdb) print root->group_pathkeys==NULL
No symbol "NULL" in current context.
(gdb) s
3559 root->query_pathkeys = root->window_pathkeys;
(gdb) s
query_planner (root=root@entry=0x55ffb53fdb70, qp_callback=qp_callback@entry=0x55ffb3299ee0 <standard_qp_callback>, qp_extra=qp_extra@entry=0x7ffc5db45260) at ../../Desktop/pg_sources/main/postgres/src/backend/optimizer/plan/planmain.c:219
219 fix_placeholder_input_needed_levels(root);
com base no que foi dito acima, posso adivinhar root->group_pathkeys == NULL
e root->query_pathkeys != NULL
é possível avaliar uma expressão usando print. algo como print (root->group_pathkeys==NULL)
então retorne 1.
normalmente é suficiente para ver se é zero.
NULL
normalmente não é conhecido pelo depurador porque não é declarado, mas definido (pode ser#define NULL 0
ou convertido em void, como disse jian). (Isso pode ser alterado por sinalizadores de compilação de tamanho caro.)Então você pode substituir
NULL
por0
. (Além disso, o depurador não se importa muito com os tipos.)O acima
==
é válido se deveria ser apenas o normal==
. Caso contrário, alguém precisa de coisas bem engraçadas para escrever.