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 model constraints
- Support for data skipping indexes - Support for data skipping indexes
- Support FINAL for `ReplacingMergeTree` (chripede)
- Added `DateTime64Field` (NiyazNz) - Added `DateTime64Field` (NiyazNz)
- Make `DateTimeField` and `DateTime64Field` timezone-aware (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. - `line`: the TSV-formatted data.
- `field_names`: names of the model fields in the 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. - `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. - `line`: the TSV-formatted data.
- `field_names`: names of the model fields in the 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. - `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. - `line`: the TSV-formatted data.
- `field_names`: names of the model fields in the 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. - `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. - `line`: the TSV-formatted data.
- `field_names`: names of the model fields in the 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. - `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) #### 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 ### DateTimeField
Extends Field Extends Field
@ -865,13 +872,6 @@ Extends Field
#### DateTimeField(default=None, alias=None, materialized=None, readonly=None, codec=None, timezone=None) #### 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 ### Decimal128Field
Extends DecimalField 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. 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) #### 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. 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) #### group_by(*args)
@ -2744,6 +2744,15 @@ Initializer.
#### toDateTime(**kwargs) #### toDateTime(**kwargs)
#### toDateTime64(**kwargs)
#### toDateTime64OrNull(precision, timezone=NO_VALUE)
#### toDateTime64OrZero(precision, timezone=NO_VALUE)
#### toDateTimeOrNull() #### toDateTimeOrNull()

View File

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

View File

@ -3,7 +3,6 @@ from __future__ import unicode_literals
import pytz import pytz
from copy import copy, deepcopy from copy import copy, deepcopy
from math import ceil from math import ceil
from .engines import CollapsingMergeTree, ReplacingMergeTree
from datetime import date, datetime from datetime import date, datetime
from .utils import comma_join, string_or_func from .utils import comma_join, string_or_func
@ -538,8 +537,9 @@ class QuerySet(object):
def final(self): def final(self):
""" """
Adds a FINAL modifier to table, meaning data will be collapsed to final version. 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)): if not isinstance(self._model_cls.engine, (CollapsingMergeTree, ReplacingMergeTree)):
raise TypeError('final() method can be used only with the CollapsingMergeTree and ReplacingMergeTree engines') 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) self._test_qs(qs[80:], 20)
def test_final(self): 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): with self.assertRaises(TypeError):
Person.objects_in(self.database).final() Person.objects_in(self.database).final()