@@ -218,6 +218,69 @@ def title(self) -> str:
218
218
return f'drop column `{ self ._column } `'
219
219
220
220
221
+ class SetSetting (AlterTableAction ):
222
+ """Set a setting value for a table-like object.
223
+
224
+ Table-like objects are Tables and TableStore.
225
+ See {AlterTableLikeObject}.
226
+
227
+ Example:
228
+ sth = ScenarioTestHelper(ctx)
229
+ sth.execute_scheme_query(
230
+ AlterTable('testTable').action(SetSetting('TIERING', 'tiering1))
231
+ )
232
+ """
233
+
234
+ def __init__ (self , setting : str , value_literal : str ) -> None :
235
+ """Constructor.
236
+
237
+ Args:
238
+ column: Name of the column to be deleted."""
239
+
240
+ super ().__init__ ()
241
+ self ._setting = setting
242
+ self ._value = value_literal
243
+
244
+ @override
245
+ def to_yql (self ) -> str :
246
+ return f'SET { self ._setting } { self ._value } '
247
+
248
+ @override
249
+ def title (self ) -> str :
250
+ return f'set { self ._setting } = { self ._value } '
251
+
252
+
253
+ class ResetSetting (AlterTableAction ):
254
+ """Reset value of a setting for a table-like object.
255
+
256
+ Table-like objects are Tables and TableStore.
257
+ See {AlterTableLikeObject}.
258
+
259
+ Example:
260
+ sth = ScenarioTestHelper(ctx)
261
+ sth.execute_scheme_query(
262
+ AlterTable('testTable').action(ResetSetting('TIERING'))
263
+ )
264
+ """
265
+
266
+ def __init__ (self , setting : str ) -> None :
267
+ """Constructor.
268
+
269
+ Args:
270
+ setting: Name of altered setting."""
271
+
272
+ super ().__init__ ()
273
+ self ._setting = setting
274
+
275
+ @override
276
+ def to_yql (self ) -> str :
277
+ return f'RESET ({ self ._setting } )'
278
+
279
+ @override
280
+ def title (self ) -> str :
281
+ return f'reset { self ._setting } '
282
+
283
+
221
284
class AlterTableLikeObject (ScenarioTestHelper .IYqlble ):
222
285
"""The base class for all requests to change table-like objects.
223
286
@@ -277,6 +340,42 @@ def drop_column(self, column: str) -> AlterTableLikeObject:
277
340
278
341
return self (DropColumn (column ))
279
342
343
+ def set_tiering (self , tiering_rule : str ) -> AlterTableLikeObject :
344
+ """Set a tiering policy.
345
+
346
+ The method is similar to calling {AlterTableLikeObject.action} with a {SetSetting} instance.
347
+
348
+ Args:
349
+ tiering_rule: Name of a TIERING_RULE object.
350
+
351
+ Returns:
352
+ self."""
353
+
354
+ return self (SetSetting ('TIERING' , f'"{ tiering_rule } "' ))
355
+
356
+ def reset_tiering (self ) -> AlterTableLikeObject :
357
+ """Remove a tiering policy.
358
+
359
+ The method is similar to calling {AlterTableLikeObject.action} with a {SetSetting} instance.
360
+
361
+ Returns:
362
+ self."""
363
+
364
+ return self (ResetSetting ('TIERING' ))
365
+
366
+ def set_ttl (self , interval : str , column : str ) -> AlterTableLikeObject :
367
+ """Set TTL for rows.
368
+
369
+ The method is similar to calling {AlterTableLikeObject.action} with a {SetSetting} instance.
370
+
371
+ Args:
372
+ tiering_rule: Name of a TIERING_RULE object.
373
+
374
+ Returns:
375
+ self."""
376
+
377
+ return self (SetSetting ('TTL' , f'Interval("{ interval } ") ON `{ column } `' ))
378
+
280
379
@override
281
380
def params (self ) -> Dict [str , str ]:
282
381
return {self ._type (): self ._name , 'actions' : ', ' .join ([a .title () for a in self ._actions ])}
0 commit comments