@@ -28,9 +28,12 @@ class KMeansTreeSettings;
28
28
class PartitioningSettings ;
29
29
class DateTypeColumnModeSettings ;
30
30
class TtlSettings ;
31
+ class TtlTier ;
31
32
class TableIndex ;
32
33
class TableIndexDescription ;
33
34
class ValueSinceUnixEpochModeSettings ;
35
+ class DateTypeColumnModeSettingsV1 ;
36
+ class ValueSinceUnixEpochModeSettingsV1 ;
34
37
35
38
} // namespace Table
36
39
} // namespace Ydb
@@ -427,17 +430,46 @@ struct TPartitionStats {
427
430
uint32_t LeaderNodeId = 0 ;
428
431
};
429
432
433
+ struct TTtlDeleteAction {};
434
+
435
+ struct TTtlEvictToExternalStorageAction {
436
+ std::string StorageName;
437
+ };
438
+
439
+ class TTtlTierSettings {
440
+ public:
441
+ using TAction = std::variant<
442
+ std::monostate,
443
+ TTtlDeleteAction,
444
+ TTtlEvictToExternalStorageAction
445
+ >;
446
+
447
+ public:
448
+ explicit TTtlTierSettings (TDuration applyAfter, const TAction& action);
449
+ explicit TTtlTierSettings (const Ydb::Table::TtlTier& tier);
450
+ void SerializeTo (Ydb::Table::TtlTier& proto) const ;
451
+
452
+ TDuration GetApplyAfter () const ;
453
+ const TAction& GetAction () const ;
454
+
455
+ private:
456
+ TDuration ApplyAfter_;
457
+ TAction Action_;
458
+ };
459
+
430
460
class TDateTypeColumnModeSettings {
431
461
public:
432
- explicit TDateTypeColumnModeSettings (const std::string& columnName, const TDuration& expireAfter );
462
+ explicit TDateTypeColumnModeSettings (const std::string& columnName, const TDuration& deprecatedExpireAfter = TDuration::Max() );
433
463
void SerializeTo (Ydb::Table::DateTypeColumnModeSettings& proto) const ;
464
+ void SerializeTo (Ydb::Table::DateTypeColumnModeSettingsV1& proto) const ;
434
465
435
466
const std::string& GetColumnName () const ;
467
+ // Deprecated. Use TTtlSettings::GetExpireAfter()
436
468
const TDuration& GetExpireAfter () const ;
437
469
438
470
private:
439
471
std::string ColumnName_;
440
- TDuration ExpireAfter_ ;
472
+ TDuration DeprecatedExpireAfter_ ;
441
473
};
442
474
443
475
class TValueSinceUnixEpochModeSettings {
@@ -452,8 +484,9 @@ class TValueSinceUnixEpochModeSettings {
452
484
};
453
485
454
486
public:
455
- explicit TValueSinceUnixEpochModeSettings (const std::string& columnName, EUnit columnUnit, const TDuration& expireAfter );
487
+ explicit TValueSinceUnixEpochModeSettings (const std::string& columnName, EUnit columnUnit, const TDuration& deprecatedExpireAfter = TDuration::Max() );
456
488
void SerializeTo (Ydb::Table::ValueSinceUnixEpochModeSettings& proto) const ;
489
+ void SerializeTo (Ydb::Table::ValueSinceUnixEpochModeSettingsV1& proto) const ;
457
490
458
491
const std::string& GetColumnName () const ;
459
492
EUnit GetColumnUnit () const ;
@@ -466,11 +499,17 @@ class TValueSinceUnixEpochModeSettings {
466
499
private:
467
500
std::string ColumnName_;
468
501
EUnit ColumnUnit_;
469
- TDuration ExpireAfter_ ;
502
+ TDuration DeprecatedExpireAfter_ ;
470
503
};
471
504
472
505
// ! Represents ttl settings
473
506
class TTtlSettings {
507
+ private:
508
+ using TMode = std::variant<
509
+ TDateTypeColumnModeSettings,
510
+ TValueSinceUnixEpochModeSettings
511
+ >;
512
+
474
513
public:
475
514
using EUnit = TValueSinceUnixEpochModeSettings::EUnit;
476
515
@@ -479,25 +518,35 @@ class TTtlSettings {
479
518
ValueSinceUnixEpoch = 1 ,
480
519
};
481
520
521
+ explicit TTtlSettings (const std::string& columnName, const std::vector<TTtlTierSettings>& tiers);
482
522
explicit TTtlSettings (const std::string& columnName, const TDuration& expireAfter);
483
- explicit TTtlSettings (const Ydb::Table::DateTypeColumnModeSettings& mode, uint32_t runIntervalSeconds);
484
523
const TDateTypeColumnModeSettings& GetDateTypeColumn () const ;
524
+ // Deprecated. Use FromProto()
525
+ explicit TTtlSettings (const Ydb::Table::DateTypeColumnModeSettings& mode, uint32_t runIntervalSeconds);
485
526
527
+ explicit TTtlSettings (const std::string& columnName, EUnit columnUnit, const std::vector<TTtlTierSettings>& tiers);
486
528
explicit TTtlSettings (const std::string& columnName, EUnit columnUnit, const TDuration& expireAfter);
487
- explicit TTtlSettings (const Ydb::Table::ValueSinceUnixEpochModeSettings& mode, uint32_t runIntervalSeconds);
488
529
const TValueSinceUnixEpochModeSettings& GetValueSinceUnixEpoch () const ;
530
+ // Deprecated. Use FromProto()
531
+ explicit TTtlSettings (const Ydb::Table::ValueSinceUnixEpochModeSettings& mode, uint32_t runIntervalSeconds);
489
532
533
+ static std::optional<TTtlSettings> FromProto (const Ydb::Table::TtlSettings& proto);
490
534
void SerializeTo (Ydb::Table::TtlSettings& proto) const ;
491
535
EMode GetMode () const ;
492
536
493
537
TTtlSettings& SetRunInterval (const TDuration& value);
494
538
const TDuration& GetRunInterval () const ;
495
539
540
+ const std::vector<TTtlTierSettings>& GetTiers () const ;
541
+ std::optional<TDuration> GetExpireAfter () const ;
542
+
496
543
private:
497
- std::variant<
498
- TDateTypeColumnModeSettings,
499
- TValueSinceUnixEpochModeSettings
500
- > Mode_;
544
+ explicit TTtlSettings (TMode mode, const std::vector<TTtlTierSettings>& tiers, ui32 runIntervalSeconds);
545
+ static std::optional<TDuration> GetExpireAfterFrom (const std::vector<TTtlTierSettings>& tiers);
546
+
547
+ private:
548
+ TMode Mode_;
549
+ std::vector<TTtlTierSettings> Tiers_;
501
550
TDuration RunInterval_ = TDuration::Zero();
502
551
};
503
552
0 commit comments