@@ -391,8 +391,11 @@ aqo_stat_reset(void)
391391elog (ERROR ,"[AQO] hash table corrupted" );
392392num_remove ++ ;
393393}
394+ aqo_state -> stat_changed = true;
394395LWLockRelease (& aqo_state -> stat_lock );
395- Assert (num_remove == num_entries );/* Is it really impossible? */
396+
397+ if (num_remove != num_entries )
398+ elog (ERROR ,"[AQO] Stat memory storage is corrupted or parallel access without a lock was detected." );
396399
397400aqo_stat_flush ();
398401
@@ -1231,9 +1234,10 @@ aqo_qtexts_reset(void)
12311234}
12321235aqo_state -> qtexts_changed = true;
12331236LWLockRelease (& aqo_state -> qtexts_lock );
1234- Assert (num_remove == num_entries - 1 );/* Is it really impossible? */
1237+ if (num_remove != num_entries - 1 )
1238+ elog (ERROR ,"[AQO] Query texts memory storage is corrupted or parallel access without a lock was detected." );
12351239
1236- /* TODO: clean disk storage */
1240+ aqo_qtexts_flush ();
12371241
12381242return num_remove ;
12391243}
@@ -1441,6 +1445,7 @@ _fill_knn_data(const DataEntry *entry, List **reloids)
14411445ptr += sizeof (double )* data -> cols ;
14421446}
14431447}
1448+
14441449/* copy targets from DSM storage */
14451450memcpy (data -> targets ,ptr ,sizeof (double )* entry -> rows );
14461451ptr += sizeof (double )* entry -> rows ;
@@ -1463,7 +1468,11 @@ _fill_knn_data(const DataEntry *entry, List **reloids)
14631468* reloids = lappend_oid (* reloids ,ObjectIdGetDatum (* (Oid * )ptr ));
14641469ptr += sizeof (Oid );
14651470}
1466- Assert (ptr - (char * )dsa_get_address (data_dsa ,entry -> data_dp )== sz );
1471+
1472+ offset = ptr - (char * )dsa_get_address (data_dsa ,entry -> data_dp );
1473+ if (offset != sz )
1474+ elog (PANIC ,"[AQO] Shared memory ML storage is corrupted." );
1475+
14671476return data ;
14681477}
14691478
@@ -1712,9 +1721,10 @@ aqo_data_reset(void)
17121721}
17131722aqo_state -> data_changed = true;
17141723LWLockRelease (& aqo_state -> data_lock );
1715- Assert (num_remove == num_entries );
1724+ if (num_remove != num_entries )
1725+ elog (ERROR ,"[AQO] Query ML memory storage is corrupted or parallel access without a lock has detected." );
17161726
1717- /* TODO: clean disk storage */
1727+ aqo_data_flush ();
17181728
17191729return num_remove ;
17201730}
@@ -1846,8 +1856,11 @@ aqo_queries_reset(void)
18461856elog (ERROR ,"[AQO] hash table corrupted" );
18471857num_remove ++ ;
18481858}
1859+ aqo_state -> queries_changed = true;
18491860LWLockRelease (& aqo_state -> queries_lock );
1850- Assert (num_remove == num_entries - 1 );
1861+
1862+ if (num_remove != num_entries - 1 )
1863+ elog (ERROR ,"[AQO] Queries memory storage is corrupted or parallel access without a lock has detected." );
18511864
18521865aqo_queries_flush ();
18531866