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

Function _upgradeTable

be/src/catalog/workload-management-init.cc:302–361  ·  view source on GitHub ↗

Upgrades a table by running alter table statements. Columns with a schema version greater than the current table schema version and less than or equal to the target version will be added to the table. Equivalent to: ALTER TABLE {{table}} ADD IF NOT EXISTS COLUMNS (...) ALTER TABLE {{table}} SET TBLPROPERTIES ('wm_schema_version'='X.X.X')

Source from the content-addressed store, hash-verified

300/// Equivalent to: ALTER TABLE {{table}} ADD IF NOT EXISTS COLUMNS (...)
301/// ALTER TABLE {{table}} SET TBLPROPERTIES ('wm_schema_version'='X.X.X')
302static Status _upgradeTable(CatalogServiceIf* svc, const string& ip_addr,
303 const string& table_name, const Version& current_ver, const Version& target_ver) {
304 DCHECK_NE(current_ver, target_ver);
305
306 // Add new columns.
307 TDdlExecResponse resp;
308 TDdlExecRequest req;
309 TAlterTableParams t_alter_params;
310 TAlterTableAddColsParams t_add_cols;
311 TTableName t_table_name;
312
313 t_table_name.__set_db_name(WM_DB);
314 t_table_name.__set_table_name(table_name);
315
316 t_add_cols.__set_if_not_exists(true);
317 t_add_cols.__set_columns(
318 _buildCols([&current_ver, &target_ver](const FieldDefinition& f) {
319 return f.schema_version > current_ver && f.schema_version <= target_ver;
320 }));
321
322 t_alter_params.__set_add_cols_params(t_add_cols);
323 t_alter_params.__set_alter_type(TAlterTableType::type::ADD_COLUMNS);
324 t_alter_params.__set_table_name(t_table_name);
325
326 TDdlQueryOptions query_opts;
327 query_opts.__set_sync_ddl(true);
328
329 req.__set_query_options(query_opts);
330 req.__set_header(_getHeader(ip_addr));
331 req.__set_ddl_type(TDdlType::type::ALTER_TABLE);
332 req.__set_alter_table_params(t_alter_params);
333
334 svc->ExecDdl(resp, req);
335 if (resp.result.status.status_code != TErrorCode::type::OK) {
336 return StatusFromThrift(resp.result.status);
337 }
338
339 // Update table schema version.
340 TAlterTableSetTblPropertiesParams t_set_props_params;
341 TAlterTableParams t_alter_schema_ver;
342
343 t_set_props_params.__set_properties(
344 {make_pair(WM_SCHEMA_VER_PROP_NAME, target_ver.ToString())});
345 t_set_props_params.__set_target(TTablePropertyType::type::TBL_PROPERTY);
346
347 t_alter_schema_ver.__set_alter_type(TAlterTableType::type::SET_TBL_PROPERTIES);
348 t_alter_schema_ver.__set_set_tbl_properties_params(t_set_props_params);
349 t_alter_schema_ver.__set_table_name(t_table_name);
350
351 resp = TDdlExecResponse();
352 req = TDdlExecRequest();
353
354 req.__set_header(_getHeader(ip_addr));
355 req.__set_ddl_type(TDdlType::type::ALTER_TABLE);
356 req.__set_query_options(query_opts);
357 req.__set_alter_table_params(t_alter_schema_ver);
358
359 svc->ExecDdl(resp, req);

Callers 1

_tableSchemaManagementFunction · 0.85

Calls 5

_buildColsFunction · 0.85
_getHeaderFunction · 0.85
StatusFromThriftFunction · 0.85
ExecDdlMethod · 0.45
ToStringMethod · 0.45

Tested by

no test coverage detected