Skip to content

Commit 450b47c

Browse files
author
a.pervushina
committed
Fix aqo_data init neighbours
1 parent 7a12279 commit 450b47c

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

storage.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,6 +1337,8 @@ aqo_data_store(uint64 fs, int fss, OkNNrdata *data, List *reloids)
13371337
entry->cols = data->cols;
13381338
entry->rows = data->rows;
13391339
entry->nrels = list_length(reloids);
1340+
entry->neighbour_refs.next = NULL;
1341+
entry->neighbour_refs.prev = NULL;
13401342

13411343
size = _compute_data_dsa(entry);
13421344
entry->data_dp = dsa_allocate0(data_dsa, size);
@@ -1391,10 +1393,14 @@ aqo_data_store(uint64 fs, int fss, OkNNrdata *data, List *reloids)
13911393
* Find prev fs with the same fss
13921394
*/
13931395

1396+
elog(LOG, "aqo_data_store1 entry->fss %ld", entry->key.fss);
1397+
13941398
if (!found) {
13951399
LWLockAcquire(&aqo_state->neighbours_lock, LW_EXCLUSIVE);
13961400

13971401
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);
13981404

13991405
/* A new element contains backward link to the first element list and
14001406
* 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)
14061412
entry->neighbour_refs.prev = prev->data;
14071413
}
14081414
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);
14091417
aqo_state->neighbours_changed = true;
14101418
LWLockRelease(&aqo_state->neighbours_lock);
14111419
}
@@ -1771,9 +1779,17 @@ _aqo_data_clean(uint64 fs)
17711779

17721780
if (has_prev)
17731781
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+
17741786
if (has_next)
17751787
entry->neighbour_refs.next->neighbour_refs.prev = has_prev ? entry->neighbour_refs.prev : NULL;
17761788

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+
17771793
/* Fix or remove neighbours htab entry*/
17781794
LWLockAcquire(&aqo_state->neighbours_lock, LW_EXCLUSIVE);
17791795
fss_htab_entry = (NeighboursEntry *) hash_search(fss_neighbours, &entry->key.fss, HASH_FIND, &found);
@@ -1787,6 +1803,7 @@ _aqo_data_clean(uint64 fs)
17871803
{
17881804
hash_search(fss_neighbours, &entry->key.fss, HASH_REMOVE, NULL);
17891805
}
1806+
17901807
/*
17911808
* We found element in Neibours hash table and made change:
17921809
* either delete element of table or replace its value.
@@ -2339,6 +2356,7 @@ cleanup_aqo_database(bool gentle, int *fs_num, int *fss_num)
23392356
if (has_next)
23402357
entry->neighbour_refs.next->neighbour_refs.prev = has_prev ? entry->neighbour_refs.prev : NULL;
23412358

2359+
23422360
/* Fix or remove neighbours htab entry*/
23432361
LWLockAcquire(&aqo_state->neighbours_lock, LW_EXCLUSIVE);
23442362
fss_htab_entry = (NeighboursEntry *) hash_search(fss_neighbours, &key.fss, HASH_FIND, &found);

0 commit comments

Comments
 (0)