22
33PG_MODULE_MAGIC ;
44
5- void _PG_init (void );
6- void _PG_fini ( void );
5+ void _PG_init (void );
6+
77
88/* Strategy of determining feature space for new queries. */
99int aqo_mode ;
@@ -13,6 +13,7 @@ static const struct config_enum_entry format_options[] = {
1313{"intelligent" ,AQO_MODE_INTELLIGENT , false},
1414{"forced" ,AQO_MODE_FORCED , false},
1515{"controlled" ,AQO_MODE_CONTROLLED , false},
16+ {"learn" ,AQO_MODE_LEARN , false},
1617{"disabled" ,AQO_MODE_DISABLED , false},
1718{NULL ,0 , false}
1819};
@@ -49,17 +50,17 @@ boolexplain_aqo;
4950instr_time query_starttime ;
5051double query_planning_time ;
5152
52- /* Saved hook valuesin case of unload */
53- post_parse_analyze_hook_type prev_post_parse_analyze_hook ;
54- planner_hook_type prev_planner_hook ;
55- ExecutorStart_hook_type prev_ExecutorStart_hook ;
56- ExecutorEnd_hook_type prev_ExecutorEnd_hook ;
57- set_baserel_rows_estimate_hook_type prev_set_baserel_rows_estimate_hook ;
58- get_parameterized_baserel_size_hook_type prev_get_parameterized_baserel_size_hook ;
59- set_joinrel_size_estimates_hook_type prev_set_joinrel_size_estimates_hook ;
60- get_parameterized_joinrel_size_hook_type prev_get_parameterized_joinrel_size_hook ;
61- copy_generic_path_info_hook_type prev_copy_generic_path_info_hook ;
62- ExplainOnePlan_hook_type prev_ExplainOnePlan_hook ;
53+ /* Saved hook values */
54+ post_parse_analyze_hook_type prev_post_parse_analyze_hook ;
55+ planner_hook_type prev_planner_hook ;
56+ ExecutorStart_hook_type prev_ExecutorStart_hook ;
57+ ExecutorEnd_hook_type prev_ExecutorEnd_hook ;
58+ set_baserel_rows_estimate_hook_type prev_set_baserel_rows_estimate_hook ;
59+ get_parameterized_baserel_size_hook_type prev_get_parameterized_baserel_size_hook ;
60+ set_joinrel_size_estimates_hook_type prev_set_joinrel_size_estimates_hook ;
61+ get_parameterized_joinrel_size_hook_type prev_get_parameterized_joinrel_size_hook ;
62+ copy_generic_path_info_hook_type prev_copy_generic_path_info_hook ;
63+ ExplainOnePlan_hook_type prev_ExplainOnePlan_hook ;
6364
6465/*****************************************************************************
6566 *
@@ -82,49 +83,28 @@ _PG_init(void)
8283NULL ,
8384NULL );
8485
85- prev_planner_hook = planner_hook ;
86- planner_hook = & aqo_planner ;
87- prev_post_parse_analyze_hook = post_parse_analyze_hook ;
88- post_parse_analyze_hook = & get_query_text ;
89- prev_ExecutorStart_hook = ExecutorStart_hook ;
90- ExecutorStart_hook = & aqo_ExecutorStart ;
91- prev_ExecutorEnd_hook = ExecutorEnd_hook ;
92- ExecutorEnd_hook = & learn_query_stat ;
93- prev_set_baserel_rows_estimate_hook = set_baserel_rows_estimate_hook ;
94- set_baserel_rows_estimate_hook = & aqo_set_baserel_rows_estimate ;
95- prev_get_parameterized_baserel_size_hook =
96- get_parameterized_baserel_size_hook ;
97- get_parameterized_baserel_size_hook =
98- & aqo_get_parameterized_baserel_size ;
99- prev_set_joinrel_size_estimates_hook = set_joinrel_size_estimates_hook ;
100- set_joinrel_size_estimates_hook = & aqo_set_joinrel_size_estimates ;
101- prev_get_parameterized_joinrel_size_hook =
102- get_parameterized_joinrel_size_hook ;
103- get_parameterized_joinrel_size_hook =
104- & aqo_get_parameterized_joinrel_size ;
105- prev_copy_generic_path_info_hook = copy_generic_path_info_hook ;
106- copy_generic_path_info_hook = & aqo_copy_generic_path_info ;
107- prev_ExplainOnePlan_hook = ExplainOnePlan_hook ;
108- ExplainOnePlan_hook = print_into_explain ;
109- init_deactivated_queries_storage ();
110- }
86+ prev_planner_hook = planner_hook ;
87+ planner_hook = aqo_planner ;
88+ prev_post_parse_analyze_hook = post_parse_analyze_hook ;
89+ post_parse_analyze_hook = get_query_text ;
90+ prev_ExecutorStart_hook = ExecutorStart_hook ;
91+ ExecutorStart_hook = aqo_ExecutorStart ;
92+ prev_ExecutorEnd_hook = ExecutorEnd_hook ;
93+ ExecutorEnd_hook = learn_query_stat ;
94+ prev_set_baserel_rows_estimate_hook = set_baserel_rows_estimate_hook ;
95+ set_baserel_rows_estimate_hook = aqo_set_baserel_rows_estimate ;
96+ prev_get_parameterized_baserel_size_hook = get_parameterized_baserel_size_hook ;
97+ get_parameterized_baserel_size_hook = aqo_get_parameterized_baserel_size ;
98+ prev_set_joinrel_size_estimates_hook = set_joinrel_size_estimates_hook ;
99+ set_joinrel_size_estimates_hook = aqo_set_joinrel_size_estimates ;
100+ prev_get_parameterized_joinrel_size_hook = get_parameterized_joinrel_size_hook ;
101+ get_parameterized_joinrel_size_hook = aqo_get_parameterized_joinrel_size ;
102+ prev_copy_generic_path_info_hook = copy_generic_path_info_hook ;
103+ copy_generic_path_info_hook = aqo_copy_generic_path_info ;
104+ prev_ExplainOnePlan_hook = ExplainOnePlan_hook ;
105+ ExplainOnePlan_hook = print_into_explain ;
111106
112- void
113- _PG_fini (void )
114- {
115- planner_hook = prev_planner_hook ;
116- post_parse_analyze_hook = prev_post_parse_analyze_hook ;
117- ExecutorStart_hook = prev_ExecutorStart_hook ;
118- ExecutorEnd_hook = prev_ExecutorEnd_hook ;
119- set_baserel_rows_estimate_hook = prev_set_baserel_rows_estimate_hook ;
120- get_parameterized_baserel_size_hook =
121- prev_get_parameterized_baserel_size_hook ;
122- set_joinrel_size_estimates_hook = prev_set_joinrel_size_estimates_hook ;
123- get_parameterized_joinrel_size_hook =
124- prev_get_parameterized_joinrel_size_hook ;
125- copy_generic_path_info_hook = prev_copy_generic_path_info_hook ;
126- ExplainOnePlan_hook = prev_ExplainOnePlan_hook ;
127- fini_deactivated_queries_storage ();
107+ init_deactivated_queries_storage ();
128108}
129109
130110PG_FUNCTION_INFO_V1 (invalidate_deactivated_queries_cache );