@@ -1460,6 +1460,14 @@ bool TSqlQuery::AlterTableAction(const TRule_alter_table_action& node, TAlterTab
14601460 AlterTableRenameIndexTo (renameTo, params);
14611461 break ;
14621462 }
1463+ case TRule_alter_table_action::kAltAlterTableAction16 : {
1464+ // ALTER INDEX
1465+ const auto & rule = node.GetAlt_alter_table_action16 ().GetRule_alter_table_alter_index1 ();
1466+ if (!AlterTableAlterIndex (rule, params)) {
1467+ return false ;
1468+ }
1469+ break ;
1470+ }
14631471
14641472 case TRule_alter_table_action::ALT_NOT_SET:
14651473 AltNotImplemented (" alter_table_action" , node);
@@ -1683,6 +1691,46 @@ void TSqlQuery::AlterTableRenameIndexTo(const TRule_alter_table_rename_index_to&
16831691 params.RenameIndexTo = std::make_pair (src, dst);
16841692}
16851693
1694+ bool TSqlQuery::AlterTableAlterIndex (const TRule_alter_table_alter_index& node, TAlterTableParameters& params) {
1695+ const auto indexName = IdEx (node.GetRule_an_id3 (), *this );
1696+ params.AlterIndexes .emplace_back (indexName);
1697+ TTableSettings& indexTableSettings = params.AlterIndexes .back ().TableSettings ;
1698+
1699+ const auto & action = node.GetRule_alter_table_alter_index_action4 ();
1700+
1701+ switch (action.Alt_case ()) {
1702+ case TRule_alter_table_alter_index_action::kAltAlterTableAlterIndexAction1 : {
1703+ // SET setting value
1704+ const auto & rule = action.GetAlt_alter_table_alter_index_action1 ().GetRule_alter_table_set_table_setting_uncompat1 ();
1705+ if (!AlterTableSetTableSetting (rule, indexTableSettings, params.TableType )) {
1706+ return false ;
1707+ }
1708+ break ;
1709+ }
1710+ case TRule_alter_table_alter_index_action::kAltAlterTableAlterIndexAction2 : {
1711+ // SET (setting1 = value1, ...)
1712+ const auto & rule = action.GetAlt_alter_table_alter_index_action2 ().GetRule_alter_table_set_table_setting_compat1 ();
1713+ if (!AlterTableSetTableSetting (rule, indexTableSettings, params.TableType )) {
1714+ return false ;
1715+ }
1716+ break ;
1717+ }
1718+ case TRule_alter_table_alter_index_action::kAltAlterTableAlterIndexAction3 : {
1719+ // RESET (setting1, ...)
1720+ const auto & rule = action.GetAlt_alter_table_alter_index_action3 ().GetRule_alter_table_reset_table_setting1 ();
1721+ if (!AlterTableResetTableSetting (rule, indexTableSettings, params.TableType )) {
1722+ return false ;
1723+ }
1724+ break ;
1725+ }
1726+ case TRule_alter_table_alter_index_action::ALT_NOT_SET:
1727+ AltNotImplemented (" alter_table_alter_index_action" , action);
1728+ return false ;
1729+ }
1730+
1731+ return true ;
1732+ }
1733+
16861734bool TSqlQuery::AlterTableAddChangefeed (const TRule_alter_table_add_changefeed& node, TAlterTableParameters& params) {
16871735 TSqlExpression expr (Ctx, Mode);
16881736 return CreateChangefeed (node.GetRule_changefeed2 (), expr, params.AddChangefeeds );
0 commit comments