MCPcopy Create free account
hub / github.com/apache/impala / ExecComputeStats

Method ExecComputeStats

be/src/exec/catalog-op-executor.cc:177–233  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

175}
176
177Status CatalogOpExecutor::ExecComputeStats(const TCatalogServiceRequestHeader& header,
178 const TCatalogOpRequest& compute_stats_request,
179 const TTableSchema& tbl_stats_schema, const TRowSet& tbl_stats_data,
180 const TTableSchema& col_stats_schema, const TRowSet& col_stats_data,
181 const std::optional<long>& snapshot_id) {
182 // Create a new DDL request to alter the table's statistics.
183 TCatalogOpRequest catalog_op_req;
184 catalog_op_req.__isset.ddl_params = true;
185 catalog_op_req.__set_op_type(TCatalogOpType::DDL);
186 catalog_op_req.__set_sync_ddl(compute_stats_request.sync_ddl);
187 TDdlExecRequest& update_stats_req = catalog_op_req.ddl_params;
188 update_stats_req.__set_ddl_type(TDdlType::ALTER_TABLE);
189 update_stats_req.query_options.__set_sync_ddl(compute_stats_request.sync_ddl);
190 update_stats_req.query_options.__set_debug_action(
191 compute_stats_request.ddl_params.query_options.debug_action);
192 update_stats_req.__set_header(header);
193
194 const TComputeStatsParams& compute_stats_params =
195 compute_stats_request.ddl_params.compute_stats_params;
196 TAlterTableUpdateStatsParams& update_stats_params =
197 update_stats_req.alter_table_params.update_stats_params;
198 update_stats_req.__isset.alter_table_params = true;
199 update_stats_req.alter_table_params.__set_alter_type(TAlterTableType::UPDATE_STATS);
200 update_stats_req.alter_table_params.__set_table_name(compute_stats_params.table_name);
201 update_stats_req.alter_table_params.__isset.update_stats_params = true;
202 update_stats_params.__set_table_name(compute_stats_params.table_name);
203 update_stats_params.__set_expect_all_partitions(
204 compute_stats_params.expect_all_partitions);
205 update_stats_params.__set_is_incremental(compute_stats_params.is_incremental);
206 if (snapshot_id.has_value()) update_stats_params.__set_snapshot_id(snapshot_id.value());
207
208 // Fill the alteration request based on the child-query results.
209 SetTableStats(tbl_stats_schema, tbl_stats_data,
210 compute_stats_params.existing_part_stats, &update_stats_params);
211 if (compute_stats_params.__isset.total_file_bytes) {
212 update_stats_params.table_stats.__set_total_file_bytes(
213 compute_stats_params.total_file_bytes);
214 }
215 // col_stats_schema and col_stats_data will be empty if there was no column stats query.
216 if (!col_stats_schema.columns.empty()) {
217 if (compute_stats_params.is_incremental) {
218 RuntimeProfile::Counter* incremental_finalize_timer =
219 ADD_TIMER(profile_, "FinalizeIncrementalStatsTimer");
220 SCOPED_TIMER(incremental_finalize_timer);
221 FinalizePartitionedColumnStats(col_stats_schema,
222 compute_stats_params.existing_part_stats,
223 compute_stats_params.expected_partitions,
224 col_stats_data, compute_stats_params.num_partition_cols, &update_stats_params);
225 } else {
226 SetColumnStats(col_stats_schema, col_stats_data, &update_stats_params);
227 }
228 }
229
230 // Execute the 'alter table update stats' request.
231 RETURN_IF_ERROR(Exec(catalog_op_req));
232 return Status::OK();
233}
234

Callers 1

Calls 5

OKFunction · 0.85
has_valueMethod · 0.80
valueMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected