6
0
mirror of https://github.com/FirebirdSQL/firebird-qa.git synced 2025-01-22 21:43:06 +01:00
firebird-qa/tests/bugs/gh_7899_test.py

73 lines
2.2 KiB
Python

#coding:utf-8
"""
ID: issue-7899
ISSUE: 7899
TITLE: Inconsistent state of master-detail occurs after RE-connect + 'SET AUTODDL OFF' + 'drop <FK>' which is ROLLED BACK
DESCRIPTION:
NOTES:
Confirmed bug on 6.0.0.180.
Checked on intermediate builds:
6.0.0.186, commit 305c40a05b1d64c14dbf5f25f36c42c44c6392d9
5.0.1.1307, commit e35437e00687db9ed6add279cecb816dcdf8b07a
4.0.5.3042, commit f7b090043e8886ab6286f8d626dd1684dc09e3b8
"""
import pytest
from firebird.qa import *
db = db_factory()
act = python_act('db')
expected_stdout = """
Statement failed, SQLSTATE = 23000
violation of FOREIGN KEY constraint "TDETL_FK" on table "PERSISTENT_DETL"
-Foreign key reference target does not exist
-Problematic key value is ("ID" = 1)
Statement failed, SQLSTATE = 23000
violation of FOREIGN KEY constraint "TDETL_FK" on table "PERSISTENT_DETL"
-Foreign key reference target does not exist
-Problematic key value is ("ID" = 2)
"""
@pytest.mark.version('>=4.0.5')
def test_1(act: Action):
test_script = f"""
set list on;
create table persistent_main (
id int not null,
primary key (id)
);
create table persistent_detl (id int);
alter table persistent_detl add constraint tdetl_fk foreign key (id) references persistent_main (id);
commit;
insert into persistent_detl(id) values(1);
commit;
connect '{act.db.dsn}'; -------------------------------------------------------- [ !!! 1 !!! ]
set autoddl off;
commit;
alter table persistent_detl drop constraint tdetl_fk;
rollback; -------------------------------------------------------- [ !!! 2 !!! ]
insert into persistent_detl(id) values(2);
select d.id as orphan_child_id
from persistent_detl d
where not exists(select * from persistent_main m where m.id = d.id);
"""
act.expected_stdout = expected_stdout
act.isql(switches=['-q'], input = test_script, combine_output = True)
assert act.clean_stdout == act.clean_expected_stdout