Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit d3f7f3b

Browse files
Alena Rybakinadanolivo
Alena Rybakina
authored andcommitted
Load neighbours with the fss hash except dublicated neighours.
Rewrite test for look-a-like functional. Current tests contain correlation columns and queries have more nodes and description features. Add aqo_k as custom parameter to define few number of features for prediction. Its default value is 3. Queries can contain a larger number of features than 3 especially generic queries. Also add predict_a_few_neibours parameter for switch avalable to predict a few neibors than 3. It is done for not to change the previous logic of the code
1 parent 0fdbb07 commit d3f7f3b

File tree

8 files changed

+543
-198
lines changed

8 files changed

+543
-198
lines changed

aqo.c

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ void _PG_init(void);
3434
/* Strategy of determining feature space for new queries. */
3535
int aqo_mode = AQO_MODE_CONTROLLED;
3636
bool force_collect_stat;
37+
bool aqo_predict_with_few_neighbors;
3738

3839
/*
3940
* Show special info in EXPLAIN mode.
@@ -71,7 +72,7 @@ int auto_tuning_infinite_loop = 8;
7172
/* Machine learning parameters */
7273

7374
/* The number of nearest neighbors which will be chosen for ML-operations */
74-
int aqo_k = 3;
75+
int aqo_k;
7576
double log_selectivity_lower_bound = -30;
7677

7778
/*
@@ -287,6 +288,29 @@ _PG_init(void)
287288
NULL
288289
);
289290

291+
DefineCustomIntVariable("aqo.k_neighbors_threshold",
292+
"Set the threshold of number of neighbors for predicting.",
293+
NULL,
294+
&aqo_k,
295+
3,
296+
1, INT_MAX / 1000,
297+
PGC_USERSET,
298+
0,
299+
NULL,
300+
NULL,
301+
NULL);
302+
303+
DefineCustomBoolVariable("aqo.predict_with_few_neighbors",
304+
"Make prediction with less neighbors than we should have.",
305+
NULL,
306+
&aqo_predict_with_few_neighbors,
307+
true,
308+
PGC_USERSET,
309+
0,
310+
NULL,
311+
lc_assign_hook,
312+
NULL);
313+
290314
prev_shmem_startup_hook = shmem_startup_hook;
291315
shmem_startup_hook = aqo_init_shmem;
292316
prev_planner_hook = planner_hook;

aqo.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ extern double auto_tuning_convergence_error;
217217
/* Machine learning parameters */
218218

219219
extern int aqo_k;
220+
extern bool aqo_predict_with_few_neighbors;
220221
extern double log_selectivity_lower_bound;
221222

222223
/* Parameters for current query */

cardinality_estimation.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ predict_for_relation(List *clauses, List *selectivities, List *relsigns,
9393
*/
9494

9595
/* Try to search in surrounding feature spaces for the same node */
96-
if (!load_aqo_data(query_context.fspace_hash, *fss, data, NULL, use_wide_search))
96+
if (!load_aqo_data(query_context.fspace_hash, *fss, data, NULL, use_wide_search, features))
9797
result = -1;
9898
else
9999
{

0 commit comments

Comments
 (0)