@@ -1337,6 +1337,8 @@ aqo_data_store(uint64 fs, int fss, OkNNrdata *data, List *reloids)
1337
1337
entry -> cols = data -> cols ;
1338
1338
entry -> rows = data -> rows ;
1339
1339
entry -> nrels = list_length (reloids );
1340
+ entry -> neighbour_refs .next = NULL ;
1341
+ entry -> neighbour_refs .prev = NULL ;
1340
1342
1341
1343
size = _compute_data_dsa (entry );
1342
1344
entry -> data_dp = dsa_allocate0 (data_dsa , size );
@@ -1391,10 +1393,14 @@ aqo_data_store(uint64 fs, int fss, OkNNrdata *data, List *reloids)
1391
1393
* Find prev fs with the same fss
1392
1394
*/
1393
1395
1396
+ elog (LOG , "aqo_data_store1 entry->fss %ld" , entry -> key .fss );
1397
+
1394
1398
if (!found ) {
1395
1399
LWLockAcquire (& aqo_state -> neighbours_lock , LW_EXCLUSIVE );
1396
1400
1397
1401
prev = (NeighboursEntry * ) hash_search (fss_neighbours , & key .fss , HASH_ENTER , & found );
1402
+ if (found )
1403
+ elog (LOG , "aqo_data_store2 prev->data->key.fss %ld key.fss %ld" , prev -> data -> key .fss , key .fss );
1398
1404
1399
1405
/* A new element contains backward link to the first element list and
1400
1406
* the first element contains toward link to the new element.
@@ -1406,6 +1412,8 @@ aqo_data_store(uint64 fs, int fss, OkNNrdata *data, List *reloids)
1406
1412
entry -> neighbour_refs .prev = prev -> data ;
1407
1413
}
1408
1414
prev -> data = entry ;
1415
+ if (prev -> data -> neighbour_refs .next )
1416
+ elog (LOG , "aqo_data_store3 prev->data->key.fss %ld prev->data->neighbour_refs.next %ld" , prev -> data -> key .fss , prev -> data -> neighbour_refs .next -> key .fss );
1409
1417
aqo_state -> neighbours_changed = true;
1410
1418
LWLockRelease (& aqo_state -> neighbours_lock );
1411
1419
}
@@ -1771,9 +1779,17 @@ _aqo_data_clean(uint64 fs)
1771
1779
1772
1780
if (has_prev )
1773
1781
entry -> neighbour_refs .prev -> neighbour_refs .next = has_next ? entry -> neighbour_refs .next : NULL ;
1782
+
1783
+ if (has_prev && has_next )
1784
+ elog (LOG , "_aqo_data_clean1 entry->neighbour_refs.prev->neighbour_refs.next: %ld, entry->key.fss: %ld" , entry -> neighbour_refs .prev -> neighbour_refs .next -> key .fss , entry -> neighbour_refs .prev -> key .fss );
1785
+
1774
1786
if (has_next )
1775
1787
entry -> neighbour_refs .next -> neighbour_refs .prev = has_prev ? entry -> neighbour_refs .prev : NULL ;
1776
1788
1789
+ if (has_prev && has_next )
1790
+ elog (LOG , "_aqo_data_clean2 entry->neighbour_refs.next->neighbour_refs.prev: %ld, entry->key.fss: %ld" , entry -> neighbour_refs .next -> neighbour_refs .prev -> key .fss , entry -> neighbour_refs .next -> key .fss );
1791
+
1792
+
1777
1793
/* Fix or remove neighbours htab entry*/
1778
1794
LWLockAcquire (& aqo_state -> neighbours_lock , LW_EXCLUSIVE );
1779
1795
fss_htab_entry = (NeighboursEntry * ) hash_search (fss_neighbours , & entry -> key .fss , HASH_FIND , & found );
@@ -1787,6 +1803,7 @@ _aqo_data_clean(uint64 fs)
1787
1803
{
1788
1804
hash_search (fss_neighbours , & entry -> key .fss , HASH_REMOVE , NULL );
1789
1805
}
1806
+
1790
1807
/*
1791
1808
* We found element in Neibours hash table and made change:
1792
1809
* either delete element of table or replace its value.
@@ -2339,6 +2356,7 @@ cleanup_aqo_database(bool gentle, int *fs_num, int *fss_num)
2339
2356
if (has_next )
2340
2357
entry -> neighbour_refs .next -> neighbour_refs .prev = has_prev ? entry -> neighbour_refs .prev : NULL ;
2341
2358
2359
+
2342
2360
/* Fix or remove neighbours htab entry*/
2343
2361
LWLockAcquire (& aqo_state -> neighbours_lock , LW_EXCLUSIVE );
2344
2362
fss_htab_entry = (NeighboursEntry * ) hash_search (fss_neighbours , & key .fss , HASH_FIND , & found );
0 commit comments