WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

objects.all().delete() non-deterministically fails on oracle #673

@bckohan

Description

@bckohan
def test_queryset_deletion(self):
    Model2A.objects.all().delete()

    for i in range(250):
        Model2B.objects.create(field1=f"B1-{i}", field2=f"B2-{i}")
    for i in range(1000):
        Model2C.objects.create(
            field1=f"C1-{i + 250}", field2=f"C2-{i + 250}", field3=f"C3-{i + 250}"
        )
    for i in range(2000):
        Model2D.objects.create(
            field1=f"D1-{i + 1250}",
            field2=f"D2-{i + 1250}",
            field3=f"D3-{i + 1250}",
            field4=f"D4-{i + 1250}",
        )

    b, c, d = 0, 0, 0
    for idx, obj in enumerate(Model2A.objects.order_by("pk")):
        if isinstance(obj, Model2D):
            d += 1
            assert obj.field1 == f"D1-{idx}"
            assert obj.field2 == f"D2-{idx}"
            assert obj.field3 == f"D3-{idx}"
            assert obj.field4 == f"D4-{idx}"
        elif isinstance(obj, Model2C):
            c += 1
            assert obj.field1 == f"C1-{idx}"
            assert obj.field2 == f"C2-{idx}"
            assert obj.field3 == f"C3-{idx}"
        elif isinstance(obj, Model2B):
            b += 1
            assert obj.field1 == f"B1-{idx}"
            assert obj.field2 == f"B2-{idx}"
        else:
            assert False, "Unexpected model type"
    assert (b, c, d) == (250, 1000, 2000)

    assert (
        11500,
        {
            "tests.Model2D": 2000,
            "tests.Model2C": 3000,
            "tests.Model2B": 3250,
            "tests.Model2A": 3250,
        },
    ) == Model2A.objects.all().delete()

This will randomly result in:

AttributeError: 'Model2B' object has no attribute 'model2b_ptr'. Did you mean: 'model2a_ptr'?

See this branch.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions