@@ -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}
@@ -1439,6 +1443,7 @@ _fill_knn_data(const DataEntry *entry, List **reloids)
14391443ptr += sizeof (double )* data -> cols ;
14401444}
14411445}
1446+
14421447/* copy targets from DSM storage */
14431448memcpy (data -> targets ,ptr ,sizeof (double )* entry -> rows );
14441449ptr += sizeof (double )* entry -> rows ;
@@ -1461,7 +1466,11 @@ _fill_knn_data(const DataEntry *entry, List **reloids)
14611466* reloids = lappend_oid (* reloids ,ObjectIdGetDatum (* (Oid * )ptr ));
14621467ptr += sizeof (Oid );
14631468}
1464- Assert (ptr - (char * )dsa_get_address (data_dsa ,entry -> data_dp )== sz );
1469+
1470+ offset = ptr - (char * )dsa_get_address (data_dsa ,entry -> data_dp );
1471+ if (offset != sz )
1472+ elog (PANIC ,"[AQO] Shared memory ML storage is corrupted." );
1473+
14651474return data ;
14661475}
14671476
@@ -1710,9 +1719,10 @@ aqo_data_reset(void)
17101719}
17111720aqo_state -> data_changed = true;
17121721LWLockRelease (& aqo_state -> data_lock );
1713- Assert (num_remove == num_entries );
1722+ if (num_remove != num_entries )
1723+ elog (ERROR ,"[AQO] Query ML memory storage is corrupted or parallel access without a lock has detected." );
17141724
1715- /* TODO: clean disk storage */
1725+ aqo_data_flush ();
17161726
17171727return num_remove ;
17181728}
@@ -1844,8 +1854,11 @@ aqo_queries_reset(void)
18441854elog (ERROR ,"[AQO] hash table corrupted" );
18451855num_remove ++ ;
18461856}
1857+ aqo_state -> queries_changed = true;
18471858LWLockRelease (& aqo_state -> queries_lock );
1848- Assert (num_remove == num_entries - 1 );
1859+
1860+ if (num_remove != num_entries - 1 )
1861+ elog (ERROR ,"[AQO] Queries memory storage is corrupted or parallel access without a lock has detected." );
18491862
18501863aqo_queries_flush ();
18511864