funky observation in many-to-one merge...not clear yet

Issue #1772 resolved
Mike Bayer repo owner created an issue

test case:

from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Parent(Base):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)
    child = relation("Child", uselist=False, cascade="all, delete-orphan", backref="parent")
    def __init__(self, id):
        self.id = id
        self.child = Child()


class Child(Base):
    __tablename__ = 'child'
    id = Column(Integer, ForeignKey('parent.id'), primary_key=True)


engine = create_engine('sqlite://', echo=True)
Base.metadata.create_all(engine)

sess = sessionmaker(engine, autoflush=False)()

p1 = Parent(1)
sess.add(p1)
sess.commit()

sess.close()

p2 = Parent(1)
p3 = sess.merge(p2)
sess.flush()

p4 = Parent(1)
p5 = sess.merge(p4)
sess.flush()

bug is specific to the new unit of work. passes on all versions before the merge

Comments (3)

  1. Log in to comment