Skip to content

Commit 33f7b44

Browse files
author
kshibkov
committed
add replica params to MergeTree engine
1 parent 33d1048 commit 33f7b44

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/engines.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from .drivers.escaper import Escaper
88

9+
escaper = Escaper()
910

1011
class Engine(SchemaEventTarget, Visitable):
1112
__visit_name__ = 'engine'
@@ -54,7 +55,7 @@ def get_expressions_or_columns(self):
5455

5556
class MergeTree(Engine):
5657
def __init__(self, date_col, key_expressions, sampling=None,
57-
index_granularity=None):
58+
index_granularity=None, replica_name=None, replica_table_path=None):
5859
self.date_col = TableCol(date_col)
5960
self.key_cols = KeysExpressionOrColumn(*key_expressions)
6061

@@ -66,6 +67,11 @@ def __init__(self, date_col, key_expressions, sampling=None,
6667
if index_granularity is not None:
6768
self.index_granularity = index_granularity
6869

70+
self.replica_name = replica_name
71+
self.replica_table_path = replica_table_path
72+
if replica_table_path and not replica_name or (not replica_table_path and replica_name):
73+
raise Exception("Need both or no one [replica_path, replica_name]")
74+
6975
super(MergeTree, self).__init__()
7076

7177
def _set_parent(self, table):
@@ -78,9 +84,11 @@ def _set_parent(self, table):
7884
self.sampling._set_parent(table)
7985

8086
def get_params(self):
81-
params = [
82-
self.date_col.get_column()
83-
]
87+
params = []
88+
if self.replica_name:
89+
params.extend(map(escaper.escape_string, [self.replica_table_path, self.replica_name]))
90+
91+
params.append(self.date_col.get_column())
8492

8593
if self.sampling:
8694
params.append(self.sampling.get_expressions_or_columns()[0])
@@ -89,6 +97,9 @@ def get_params(self):
8997
params.append(self.index_granularity)
9098
return params
9199

100+
def name(self):
101+
return ("Replicated" if self.replica_name else "") + self.__class__.__name__
102+
92103

93104
class CollapsingMergeTree(MergeTree):
94105
def __init__(self, date_col, key_expressions, sign_col, sampling=None,
@@ -178,4 +189,4 @@ def __init__(self, db, regexp):
178189
self.regexp = regexp
179190

180191
def get_params(self):
181-
return [self.db, Escaper().escape_string(self.regexp)]
192+
return [self.db, escaper.escape_string(self.regexp)]

0 commit comments

Comments
 (0)