def test_reduce_aliased_union(self): metadata = MetaData() item_table = Table( 'item', metadata, Column('id', Integer, ForeignKey('base_item.id'), primary_key=True), Column('dummy', Integer, default=0)) base_item_table = Table( 'base_item', metadata, Column('id', Integer, primary_key=True), Column('child_name', String(255), default=None)) from sqlalchemy.orm.util import polymorphic_union item_join = polymorphic_union( { 'BaseItem': base_item_table.select( base_item_table.c.child_name == 'BaseItem'), 'Item': base_item_table.join(item_table) }, None, 'item_join') eq_( util.column_set( sql_util.reduce_columns([ item_join.c.id, item_join.c.dummy, item_join.c.child_name ])), util.column_set( [item_join.c.id, item_join.c.dummy, item_join.c.child_name]))
def __mapper_args__(cls): name = cls.__name__ if name in abstract_classes: pjoin = polymorphic_union({ scls.__tablename__: scls.__table__ for scls in cls.get_subclasses()}, 'type') return { 'polymorphic_identity': name, 'with_polymorphic': ('*', pjoin), } else: return { 'polymorphic_identity': name, 'concrete': True, }
def __mapper_args__(cls): name = cls.__name__ if name in abstract_classes: pjoin = polymorphic_union( { scls.__tablename__: scls.__table__ for scls in cls.get_subclasses() }, 'type') return { 'polymorphic_identity': name, 'with_polymorphic': ('*', pjoin), } else: return { 'polymorphic_identity': name, 'concrete': True, }
def test_reduce_aliased_union_2(self): metadata = MetaData() page_table = Table( 'page', metadata, Column('id', Integer, primary_key=True), ) magazine_page_table = Table( 'magazine_page', metadata, Column('page_id', Integer, ForeignKey('page.id'), primary_key=True), ) classified_page_table = Table( 'classified_page', metadata, Column('magazine_page_id', Integer, ForeignKey('magazine_page.page_id'), primary_key=True), ) from sqlalchemy.orm.util import polymorphic_union pjoin = polymorphic_union( { 'm': page_table.join(magazine_page_table), 'c': page_table.join(magazine_page_table).join( classified_page_table), }, None, 'page_join') self.assertEquals( util.column_set( sql_util.reduce_columns( [pjoin.c.id, pjoin.c.page_id, pjoin.c.magazine_page_id])), util.column_set([pjoin.c.id]))
def test_reduce_aliased_union(self): metadata = MetaData() item_table = Table( 'item', metadata, Column('id', Integer, ForeignKey('base_item.id'), primary_key=True), Column('dummy', Integer, default=0)) base_item_table = Table( 'base_item', metadata, Column('id', Integer, primary_key=True), Column('child_name', String(255), default=None)) from sqlalchemy.orm.util import polymorphic_union item_join = polymorphic_union( { 'BaseItem':base_item_table.select(base_item_table.c.child_name=='BaseItem'), 'Item':base_item_table.join(item_table), }, None, 'item_join') self.assertEquals( set(sql_util.reduce_columns([item_join.c.id, item_join.c.dummy, item_join.c.child_name])), set([item_join.c.id, item_join.c.dummy, item_join.c.child_name]) )
def test_reduce_aliased_union_2(self): metadata = MetaData() page_table = Table('page', metadata, Column('id', Integer, primary_key=True), ) magazine_page_table = Table('magazine_page', metadata, Column('page_id', Integer, ForeignKey('page.id'), primary_key=True), ) classified_page_table = Table('classified_page', metadata, Column('magazine_page_id', Integer, ForeignKey('magazine_page.page_id'), primary_key=True), ) from sqlalchemy.orm.util import polymorphic_union pjoin = polymorphic_union( { 'm': page_table.join(magazine_page_table), 'c': page_table.join(magazine_page_table).join(classified_page_table), }, None, 'page_join') self.assertEquals( set(sql_util.reduce_columns([pjoin.c.id, pjoin.c.page_id, pjoin.c.magazine_page_id])), set([pjoin.c.id]) )