only use partition key when deleting static columns

PYTHON-608
This commit is contained in:
Adam Holmberg
2016-08-08 10:12:10 -05:00
parent d244ece986
commit ab7b9ef0e7

View File

@@ -1283,19 +1283,23 @@ class DMLQuery(object):
"""
ds = DeleteStatement(self.column_family_name, conditionals=conditionals, if_exists=self._if_exists)
deleted_fields = False
static_only = True
for _, v in self.instance._values.items():
col = v.column
if v.deleted:
ds.add_field(col.db_field_name)
deleted_fields = True
static_only &= col.static
elif isinstance(col, columns.Map):
uc = MapDeleteClause(col.db_field_name, v.value, v.previous_value)
if uc.get_context_size() > 0:
ds.add_field(uc)
deleted_fields = True
static_only |= col.static
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))
self._execute(ds)