the column will be propagated down to
subclasses. [ticket:1570] This is the reverse
situation as that of [ticket:1523], fixed in 0.5.6.
+
+ - Fixed a slight inaccuracy in the sharding example.
+ Comparing equivalence of columns in the ORM is best
+ accomplished using col1.shares_lineage(col2).
+ [ticket:1491]
0.5.6
=====
# and convert to shard ids
class FindContinent(sql.ClauseVisitor):
def visit_binary(self, binary):
- if binary.left is weather_locations.c.continent:
+ # "shares_lineage()" returns True if both columns refer to the same
+ # statement column, adjusting for any annotations present.
+ # (an annotation is an internal clone of a Column object
+ # and occur when using ORM-mapped attributes like
+ # "WeatherLocation.continent"). A simpler comparison, though less accurate,
+ # would be "binary.left.key == 'continent'".
+ if binary.left.shares_lineage(weather_locations.c.continent):
if binary.operator == operators.eq:
ids.append(shard_lookup[binary.right.value])
elif binary.operator == operators.in_op:
class FindContinent(sql.ClauseVisitor):
def visit_binary(self, binary):
- if binary.left is weather_locations.c.continent:
+ if binary.left.shares_lineage(weather_locations.c.continent):
if binary.operator == operators.eq:
ids.append(shard_lookup[binary.right.value])
elif binary.operator == operators.in_op: