| 148 |
"DELETE FROM article_favorite WHERE UID = %d AND AID IN (", |
"DELETE FROM article_favorite WHERE UID = %d AND AID IN (", |
| 149 |
p_favor->uid); |
p_favor->uid); |
| 150 |
|
|
| 151 |
for (i = 0, j = 0; i < p_favor->aid_base_cnt && j < p_favor->aid_inc_cnt;) |
for (i = 0, j = 0; j < p_favor->aid_inc_cnt;) |
| 152 |
{ |
{ |
| 153 |
if (p_favor->aid_base[i] == p_favor->aid_inc[j]) // XOR - delete record |
if (i < p_favor->aid_base_cnt && p_favor->aid_base[i] == p_favor->aid_inc[j]) // XOR - delete record |
| 154 |
{ |
{ |
| 155 |
snprintf(tuple_tmp, sizeof(tuple_tmp), "%d, ", p_favor->aid_inc[j]); |
snprintf(tuple_tmp, sizeof(tuple_tmp), "%d, ", p_favor->aid_inc[j]); |
| 156 |
strncat(sql_del, tuple_tmp, sizeof(sql_del) - 1 - strnlen(sql_del, sizeof(sql_del))); |
strncat(sql_del, tuple_tmp, sizeof(sql_del) - 1 - strnlen(sql_del, sizeof(sql_del))); |
| 159 |
i++; |
i++; |
| 160 |
j++; |
j++; |
| 161 |
} |
} |
| 162 |
else if (p_favor->aid_base[i] < p_favor->aid_inc[j]) // skip existing record |
else if (i < p_favor->aid_base_cnt && p_favor->aid_base[i] < p_favor->aid_inc[j]) // skip existing record |
| 163 |
{ |
{ |
| 164 |
i++; |
i++; |
| 165 |
} |
} |
| 166 |
else // if (p_favor->aid_base[i] > p_favor->aid_inc[j]) |
else // if (i >= p_favor->aid_base_cnt || p_favor->aid_base[i] > p_favor->aid_inc[j]) |
| 167 |
{ |
{ |
| 168 |
snprintf(tuple_tmp, sizeof(tuple_tmp), |
snprintf(tuple_tmp, sizeof(tuple_tmp), |
| 169 |
"(%d, %d), ", |
"(%d, %d), ", |
| 321 |
mid = (left + right) / 2; |
mid = (left + right) / 2; |
| 322 |
if (aid < (i == 0 ? p_favor->aid_base[mid] : p_favor->aid_inc[mid])) |
if (aid < (i == 0 ? p_favor->aid_base[mid] : p_favor->aid_inc[mid])) |
| 323 |
{ |
{ |
| 324 |
right = mid; |
right = mid - 1; |
| 325 |
} |
} |
| 326 |
else if (aid > (i == 0 ? p_favor->aid_base[mid] : p_favor->aid_inc[mid])) |
else if (aid > (i == 0 ? p_favor->aid_base[mid] : p_favor->aid_inc[mid])) |
| 327 |
{ |
{ |
| 372 |
mid = (left + right) / 2; |
mid = (left + right) / 2; |
| 373 |
if (aid < (i == 0 ? p_favor->aid_base[mid] : p_favor->aid_inc[mid])) |
if (aid < (i == 0 ? p_favor->aid_base[mid] : p_favor->aid_inc[mid])) |
| 374 |
{ |
{ |
| 375 |
right = mid; |
right = mid - 1; |
| 376 |
} |
} |
| 377 |
else if (aid > (i == 0 ? p_favor->aid_base[mid] : p_favor->aid_inc[mid])) |
else if (aid > (i == 0 ? p_favor->aid_base[mid] : p_favor->aid_inc[mid])) |
| 378 |
{ |
{ |