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

Commit 0796a44

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 081c6a5 commit 0796a44

File tree

8 files changed

+541
-196
lines changed

8 files changed

+541
-196
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
/*
@@ -306,6 +307,29 @@ _PG_init(void)
306307
NULL
307308
);
308309

310+
DefineCustomIntVariable("aqo.k_neighbors_threshold",
311+
"Set the threshold of number of neighbors for predicting.",
312+
NULL,
313+
&aqo_k,
314+
3,
315+
1, INT_MAX / 1000,
316+
PGC_USERSET,
317+
0,
318+
NULL,
319+
NULL,
320+
NULL);
321+
322+
DefineCustomBoolVariable("aqo.predict_with_few_neighbors",
323+
"Make prediction with less neighbors than we should have.",
324+
NULL,
325+
&aqo_predict_with_few_neighbors,
326+
true,
327+
PGC_USERSET,
328+
0,
329+
NULL,
330+
lc_assign_hook,
331+
NULL);
332+
309333
prev_shmem_startup_hook = shmem_startup_hook;
310334
shmem_startup_hook = aqo_init_shmem;
311335
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)