源泉: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);
上記の内容に基づいて推測し、root->group_pathkeys == NULL
printroot->query_pathkeys != NULL
を活用して表現を評価することができます。その後print (root->group_pathkeys==NULL)
、1を返します。
答え1
print root->group_pathkeys
一般的にゼロであることを確認するだけで十分です。
NULL
通常、デバッガは宣言されていませんが、定義されているのでこれについては知りません(おそらく#define NULL 0
jianが言ったようにvoidとしてキャストされたでしょう)。 (これは高価なコンパイルフラグによって変更される可能性があります。)
(また、デバッガはタイプにあまり気にしません。NULL
)0
上記のifは==
正常でなければなりません==
。それ以外の場合は、非常に興味深い内容を作成する必要があります。