[CalendarServer-changes] [15311] twext/trunk/twext/enterprise/dal
source_changes at macosforge.org
source_changes at macosforge.org
Sun Nov 15 10:07:19 PST 2015
Revision: 15311
http://trac.calendarserver.org//changeset/15311
Author: cdaboo at apple.com
Date: 2015-11-15 10:07:19 -0800 (Sun, 15 Nov 2015)
Log Message:
-----------
Allow comparisons of index columns.
Modified Paths:
--------------
twext/trunk/twext/enterprise/dal/model.py
twext/trunk/twext/enterprise/dal/test/test_parseschema.py
Modified: twext/trunk/twext/enterprise/dal/model.py
===================================================================
--- twext/trunk/twext/enterprise/dal/model.py 2015-11-13 23:07:17 UTC (rev 15310)
+++ twext/trunk/twext/enterprise/dal/model.py 2015-11-15 18:07:19 UTC (rev 15311)
@@ -569,18 +569,15 @@
a name based on the table name, uniqueness and column names.
"""
- def __init__(self, table, columns, unique=False):
- if unique:
- suffix = "-unique"
- else:
- suffix = ""
+ def __init__(self, name, table, columns, index_type=""):
self.name = (
- "%s%s:(%s)"
- % (table.name, suffix, ",".join([col.name for col in columns]))
+ "%s:%s:(%s)"
+ % (table.name, index_type, ",".join([col.name for col in columns]))
)
+ self.original_name = name if name else self.name
self.table = table
- self.unique = unique
+ self.index_type = index_type
self.columns = columns
@@ -592,11 +589,26 @@
@type other: L{Index}
"""
- # Nothing to do as name comparison will catch differences
- return []
+ results = []
+ # Compare the columns
+ myColumns = dict([(item.name.lower(), item) for item in self.columns])
+ otherColumns = dict([
+ (item.name.lower(), item) for item in other.columns
+ ])
+ for item in set(myColumns.keys()) - set(otherColumns.keys()):
+ results.append(
+ "Index: %s, extra column: %s" % (self.original_name, myColumns[item].name,)
+ )
+ for item in set(otherColumns.keys()) - set(myColumns.keys()):
+ results.append(
+ "Index: %s, missing column: %s" % (self.original_name, otherColumns[item].name,)
+ )
+ return results
+
+
class Sequence(FancyEqMixin, object):
"""
A sequence object.
@@ -735,17 +747,17 @@
# First add the list of explicit indexes we have
for index in self.indexes:
results.append(
- PseudoIndex(index.table, index.columns, index.unique)
+ PseudoIndex(index.name, index.table, index.columns, "unique" if index.unique else "")
)
# Now do implicit index for each table
for table in self.tables:
if table.primaryKey is not None:
- results.append(PseudoIndex(table, table.primaryKey, True))
+ results.append(PseudoIndex(None, table, table.primaryKey, "unique"))
for constraint in table.constraints:
if constraint.type == Constraint.UNIQUE:
results.append(
- PseudoIndex(table, constraint.affectsColumns, True)
+ PseudoIndex(None, table, constraint.affectsColumns, "unique")
)
return results
Modified: twext/trunk/twext/enterprise/dal/test/test_parseschema.py
===================================================================
--- twext/trunk/twext/enterprise/dal/test/test_parseschema.py 2015-11-13 23:07:17 UTC (rev 15310)
+++ twext/trunk/twext/enterprise/dal/test/test_parseschema.py 2015-11-15 18:07:19 UTC (rev 15311)
@@ -425,10 +425,10 @@
self.assertEqual(
set([pseudo.name for pseudo in s.pseudoIndexes()]),
set((
- "a-unique:(c)",
- "a:(c,b)",
- "a-unique:(b)",
- "z-unique:(c)",
+ "a:unique:(c)",
+ "a::(c,b)",
+ "a:unique:(b)",
+ "z:unique:(c)",
))
)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20151115/6d35452b/attachment.html>
More information about the calendarserver-changes
mailing list