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')
| 300 | /// Equivalent to: ALTER TABLE {{table}} ADD IF NOT EXISTS COLUMNS (...) |
| 301 | /// ALTER TABLE {{table}} SET TBLPROPERTIES ('wm_schema_version'='X.X.X') |
| 302 | static 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([¤t_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); |
no test coverage detected