diff --git a/src/gausskernel/optimizer/geqo/geqo_random.cpp b/src/gausskernel/optimizer/geqo/geqo_random.cpp index 8b9891f46..d391d22f0 100644 --- a/src/gausskernel/optimizer/geqo/geqo_random.cpp +++ b/src/gausskernel/optimizer/geqo/geqo_random.cpp @@ -17,7 +17,7 @@ #include "optimizer/geqo_random.h" -void geqo_set_seed(PlannerInfo* root, double seed) +void geqo_set_seed(PlannerInfo* root, double seed)// 设置遗传查询优化的随机种子 { GeqoPrivateData* priv = (GeqoPrivateData*)root->join_search_private; @@ -26,15 +26,19 @@ void geqo_set_seed(PlannerInfo* root, double seed) * critical to do so. */ errno_t rc = EOK; - rc = memset_s(priv->random_state, sizeof(priv->random_state), 0, sizeof(priv->random_state)); + rc = memset_s(priv->random_state, sizeof(priv->random_state), 0, sizeof(priv->random_state));// 使用memset_s将随机状态数组初始化为0 securec_check(rc, "\0", "\0"); + // 使用memcpy_s将给定的种子复制到随机状态数组中 rc = memcpy_s(priv->random_state, sizeof(priv->random_state), &seed, Min(sizeof(priv->random_state), sizeof(seed))); securec_check(rc, "\0", "\0"); } - +// 生成随机数(0到1之间)用于遗传查询优化 double geqo_rand(PlannerInfo* root) { GeqoPrivateData* priv = (GeqoPrivateData*)root->join_search_private; - +// 使用erand48函数生成随机数,基于随机状态数组 return erand48(priv->random_state); } +/* +第一个函数用于设置随机种子,第二个函数用于生成遗传查询优化中的随机数。 +*/ \ No newline at end of file