Support FINAL for ReplacingMergeTree

This commit is contained in:
Itai Shirav 2020-06-23 11:37:41 +03:00
parent 3d12bdb556
commit f35333a7b6
5 changed files with 27 additions and 17 deletions

View File

@ -5,6 +5,7 @@ Unreleased
----------
- Support for model constraints
- Support for data skipping indexes
- Support FINAL for `ReplacingMergeTree` (chripede)
- Added `DateTime64Field` (NiyazNz)
- Make `DateTimeField` and `DateTime64Field` timezone-aware (NiyazNz)

View File

@ -203,7 +203,7 @@ The `field_names` list must match the fields defined in the model, but does not
- `line`: the TSV-formatted data.
- `field_names`: names of the model fields in the data.
- `timezone_in_use`: the timezone to use when parsing dates and datetimes.
- `timezone_in_use`: the timezone to use when parsing dates and datetimes. Some fields use their own timezones.
- `database`: if given, sets the database that this instance belongs to.
@ -333,7 +333,7 @@ The `field_names` list must match the fields defined in the model, but does not
- `line`: the TSV-formatted data.
- `field_names`: names of the model fields in the data.
- `timezone_in_use`: the timezone to use when parsing dates and datetimes.
- `timezone_in_use`: the timezone to use when parsing dates and datetimes. Some fields use their own timezones.
- `database`: if given, sets the database that this instance belongs to.
@ -468,7 +468,7 @@ The `field_names` list must match the fields defined in the model, but does not
- `line`: the TSV-formatted data.
- `field_names`: names of the model fields in the data.
- `timezone_in_use`: the timezone to use when parsing dates and datetimes.
- `timezone_in_use`: the timezone to use when parsing dates and datetimes. Some fields use their own timezones.
- `database`: if given, sets the database that this instance belongs to.
@ -634,7 +634,7 @@ The `field_names` list must match the fields defined in the model, but does not
- `line`: the TSV-formatted data.
- `field_names`: names of the model fields in the data.
- `timezone_in_use`: the timezone to use when parsing dates and datetimes.
- `timezone_in_use`: the timezone to use when parsing dates and datetimes. Some fields use their own timezones.
- `database`: if given, sets the database that this instance belongs to.
@ -858,6 +858,13 @@ Extends Field
#### DateField(default=None, alias=None, materialized=None, readonly=None, codec=None)
### DateTime64Field
Extends DateTimeField
#### DateTime64Field(default=None, alias=None, materialized=None, readonly=None, codec=None, timezone=None, precision=6)
### DateTimeField
Extends Field
@ -865,13 +872,6 @@ Extends Field
#### DateTimeField(default=None, alias=None, materialized=None, readonly=None, codec=None, timezone=None)
### DateTime64Field
Extends DateTimeField
#### DateTime64Field(default=None, alias=None, materialized=None, readonly=None, codec=None, precision=6, timezone=None)
### Decimal128Field
Extends DecimalField
@ -1217,7 +1217,7 @@ Pass `prewhere=True` to apply the conditions as PREWHERE instead of WHERE.
Adds a FINAL modifier to table, meaning data will be collapsed to final version.
Can be used with `CollapsingMergeTree` engine only.
Can be used with the `CollapsingMergeTree` and `ReplacingMergeTree` engines only.
#### limit_by(offset_limit, *fields_or_expr)
@ -1340,7 +1340,7 @@ Pass `prewhere=True` to apply the conditions as PREWHERE instead of WHERE.
Adds a FINAL modifier to table, meaning data will be collapsed to final version.
Can be used with `CollapsingMergeTree` engine only.
Can be used with the `CollapsingMergeTree` and `ReplacingMergeTree` engines only.
#### group_by(*args)
@ -2744,6 +2744,15 @@ Initializer.
#### toDateTime(**kwargs)
#### toDateTime64(**kwargs)
#### toDateTime64OrNull(precision, timezone=NO_VALUE)
#### toDateTime64OrZero(precision, timezone=NO_VALUE)
#### toDateTimeOrNull()

View File

@ -93,8 +93,8 @@
* [BaseFloatField](class_reference.md#basefloatfield)
* [BaseIntField](class_reference.md#baseintfield)
* [DateField](class_reference.md#datefield)
* [DateTimeField](class_reference.md#datetimefield)
* [DateTime64Field](class_reference.md#datetime64field)
* [DateTimeField](class_reference.md#datetimefield)
* [Decimal128Field](class_reference.md#decimal128field)
* [Decimal32Field](class_reference.md#decimal32field)
* [Decimal64Field](class_reference.md#decimal64field)

View File

@ -3,7 +3,6 @@ from __future__ import unicode_literals
import pytz
from copy import copy, deepcopy
from math import ceil
from .engines import CollapsingMergeTree, ReplacingMergeTree
from datetime import date, datetime
from .utils import comma_join, string_or_func
@ -538,8 +537,9 @@ class QuerySet(object):
def final(self):
"""
Adds a FINAL modifier to table, meaning data will be collapsed to final version.
Can be used with `CollapsingMergeTree` engine only.
Can be used with the `CollapsingMergeTree` and `ReplacingMergeTree` engines only.
"""
from .engines import CollapsingMergeTree, ReplacingMergeTree
if not isinstance(self._model_cls.engine, (CollapsingMergeTree, ReplacingMergeTree)):
raise TypeError('final() method can be used only with the CollapsingMergeTree and ReplacingMergeTree engines')

View File

@ -287,7 +287,7 @@ class QuerySetTestCase(TestCaseWithData):
self._test_qs(qs[80:], 20)
def test_final(self):
# Final can be used with CollapsingMergeTree engine only
# Final can be used with CollapsingMergeTree/ReplacingMergeTree engines only
with self.assertRaises(TypeError):
Person.objects_in(self.database).final()