only use partition key when deleting static columns
PYTHON-608
This commit is contained in:
@@ -1283,19 +1283,23 @@ class DMLQuery(object):
|
|||||||
"""
|
"""
|
||||||
ds = DeleteStatement(self.column_family_name, conditionals=conditionals, if_exists=self._if_exists)
|
ds = DeleteStatement(self.column_family_name, conditionals=conditionals, if_exists=self._if_exists)
|
||||||
deleted_fields = False
|
deleted_fields = False
|
||||||
|
static_only = True
|
||||||
for _, v in self.instance._values.items():
|
for _, v in self.instance._values.items():
|
||||||
col = v.column
|
col = v.column
|
||||||
if v.deleted:
|
if v.deleted:
|
||||||
ds.add_field(col.db_field_name)
|
ds.add_field(col.db_field_name)
|
||||||
deleted_fields = True
|
deleted_fields = True
|
||||||
|
static_only &= col.static
|
||||||
elif isinstance(col, columns.Map):
|
elif isinstance(col, columns.Map):
|
||||||
uc = MapDeleteClause(col.db_field_name, v.value, v.previous_value)
|
uc = MapDeleteClause(col.db_field_name, v.value, v.previous_value)
|
||||||
if uc.get_context_size() > 0:
|
if uc.get_context_size() > 0:
|
||||||
ds.add_field(uc)
|
ds.add_field(uc)
|
||||||
deleted_fields = True
|
deleted_fields = True
|
||||||
|
static_only |= col.static
|
||||||
|
|
||||||
if deleted_fields:
|
if deleted_fields:
|
||||||
for name, col in self.model._primary_keys.items():
|
keys = self.model._partition_keys if static_only else self.model._primary_keys
|
||||||
|
for name, col in keys.items():
|
||||||
ds.add_where(col, EqualsOperator(), getattr(self.instance, name))
|
ds.add_where(col, EqualsOperator(), getattr(self.instance, name))
|
||||||
self._execute(ds)
|
self._execute(ds)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user