mirror of
https://github.com/FirebirdSQL/firebird-qa.git
synced 2025-01-22 13:33:07 +01:00
Added/Updated tests\bugs\core_3692_test.py: fixed wrong section in the head of test
This commit is contained in:
parent
ae7bf5006e
commit
23be1eafef
@ -7,89 +7,40 @@ TITLE: Cannot drop a NOT NULL constraint on a field participating in the U
|
|||||||
DESCRIPTION:
|
DESCRIPTION:
|
||||||
JIRA: CORE-3692
|
JIRA: CORE-3692
|
||||||
FBTEST: bugs.core_3692
|
FBTEST: bugs.core_3692
|
||||||
|
NOTES:
|
||||||
|
[05.10.2023] pzotov
|
||||||
|
Removed SHOW command for check result because its output often changes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from firebird.qa import *
|
from firebird.qa import *
|
||||||
|
|
||||||
init_script = """
|
init_script = """
|
||||||
recreate table cset (cname varchar(250) character set none not null);
|
recreate table test (s varchar(250) character set none not null);
|
||||||
commit;
|
commit;
|
||||||
alter table cset add constraint uq_cset unique (cname);
|
alter table test add constraint test_unq unique (s);
|
||||||
commit;
|
commit;
|
||||||
"""
|
"""
|
||||||
|
|
||||||
db = db_factory(init=init_script)
|
db = db_factory(init=init_script)
|
||||||
|
|
||||||
test_script = """
|
test_script = """
|
||||||
show table cset;
|
set bail on;
|
||||||
|
set list on;
|
||||||
set term ^;
|
alter table test alter column s drop not null;
|
||||||
execute block as
|
|
||||||
declare v_stt varchar(70);
|
|
||||||
begin
|
|
||||||
for
|
|
||||||
with
|
|
||||||
inp as(select 'cset' nm from rdb$database)
|
|
||||||
,pk_defs as( -- obtain PK constraint and get fields that assembles it
|
|
||||||
select
|
|
||||||
rc.rdb$relation_name rel_name
|
|
||||||
,rc.rdb$constraint_name pk_name
|
|
||||||
,rc.rdb$index_name pk_idx
|
|
||||||
,rs.rdb$field_name fld_name
|
|
||||||
,rs.rdb$field_position fld_pos
|
|
||||||
from rdb$relation_constraints rc
|
|
||||||
join rdb$index_segments rs on rc.rdb$index_name=rs.rdb$index_name
|
|
||||||
join inp i on rc.rdb$relation_name containing i.nm
|
|
||||||
where rc.rdb$constraint_type containing 'PRIMARY'
|
|
||||||
)
|
|
||||||
-- select * from pk_defs
|
|
||||||
,chk_list as(
|
|
||||||
select
|
|
||||||
rc.rdb$relation_name rel_name
|
|
||||||
,rc.rdb$constraint_name sub_name
|
|
||||||
,rc.rdb$constraint_type sub_type
|
|
||||||
,'alter table '||trim(rc.rdb$relation_name)||' drop constraint '||trim(rc.rdb$constraint_name)||'; -- '||trim(rc.rdb$constraint_type) stt
|
|
||||||
,ck.rdb$trigger_name
|
|
||||||
,p.pk_name -- not null ==> field is included in PK, skip it
|
|
||||||
,decode(rc.rdb$constraint_type, 'UNIQUE', 99, 0) sort_weitgh
|
|
||||||
from rdb$relation_constraints rc
|
|
||||||
join inp i on rc.rdb$relation_name containing i.nm
|
|
||||||
left join rdb$check_constraints ck on rc.rdb$constraint_name=ck.rdb$constraint_name
|
|
||||||
left join pk_defs p on rc.rdb$relation_name=p.rel_name and ck.rdb$trigger_name=p.fld_name
|
|
||||||
where
|
|
||||||
rc.rdb$relation_name not like 'RDB$%'
|
|
||||||
and rc.rdb$relation_name not like 'MON$%'
|
|
||||||
and rc.rdb$relation_name not like 'IBE$%'
|
|
||||||
and rc.rdb$constraint_type not containing 'PRIMARY'
|
|
||||||
and p.pk_name is null -- ==> this field is NOT included in PK constraint
|
|
||||||
order by rc.rdb$relation_name, decode(rc.rdb$constraint_type, 'UNIQUE', 99, 0)
|
|
||||||
)
|
|
||||||
select cast(stt as varchar(70)) stt from chk_list
|
|
||||||
into v_stt
|
|
||||||
do begin
|
|
||||||
execute statement (v_stt);
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
^ set term ;^
|
|
||||||
commit;
|
commit;
|
||||||
|
insert into test(s) values(null);
|
||||||
show table cset;
|
select s from test;
|
||||||
"""
|
"""
|
||||||
|
|
||||||
act = isql_act('db', test_script)
|
act = isql_act('db', test_script, substitutions = [ ('[ \t]+', ''), ] )
|
||||||
|
|
||||||
expected_stdout = """
|
expected_stdout = """
|
||||||
CNAME VARCHAR(250) Not Null
|
S <null>
|
||||||
CONSTRAINT UQ_CSET:
|
|
||||||
Unique key (CNAME)
|
|
||||||
CNAME VARCHAR(250) Nullable
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@pytest.mark.version('>=3')
|
@pytest.mark.version('>=3')
|
||||||
def test_1(act: Action):
|
def test_1(act: Action):
|
||||||
act.expected_stdout = expected_stdout
|
act.expected_stdout = expected_stdout
|
||||||
act.execute()
|
act.execute(combine_output = True)
|
||||||
assert act.clean_stdout == act.clean_expected_stdout
|
assert act.clean_stdout == act.clean_expected_stdout
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user