6
0
mirror of https://github.com/FirebirdSQL/firebird-qa.git synced 2025-01-22 13:33:07 +01:00
firebird-qa/tests/bugs/gh_8249_test.py

128 lines
3.5 KiB
Python
Raw Permalink Normal View History

#coding:utf-8
"""
ID: issue-8249
ISSUE: https://github.com/FirebirdSQL/firebird/issues/8249
TITLE: CAST() ignores collation of target data type
NOTES:
[22.10.2024] pzotov
Commit related to this test (04.10.2024 13:13):
https://github.com/FirebirdSQL/firebird/commit/aa167e2b36122684796d7b34935b0340be6f5074
See also: gh_7748_test.py
Confirmed problem on 6.0.0.483: queries to view, function, SP and EB complete OK (rather than expectedly raise error).
Checked on 6.0.0.485 -- all OK. No output to STDOUT, all queries finish with errors.
"""
import pytest
from firebird.qa import *
db = db_factory()
test_script = """
set list on;
create view v_test_1 as
select cast('x' as varchar(10) character set utf8 collate missed_coll) as view_output from rdb$database
;
commit;
set term ^;
create procedure sp_test_1 returns(sp_output varchar(10) character set utf8) as
begin
sp_output = cast('x' as varchar(10) character set utf8 collate missed_coll);
suspend;
end
^
create procedure sp_test_2 returns(sp_output varchar(10) character set utf8) as
declare v_text varchar(10) character set utf8;
begin
v_text = cast('x' as varchar(10) character set utf8 collate missed_coll);
sp_output = v_text;
suspend;
end
^
create function fn_test_1 returns varchar(10) character set utf8 as
begin
return cast('x' as varchar(10) character set utf8 collate missed_coll);
end
^
set term ;^
commit;
select * from v_test_1;
select fn_test_1() as fn_output from rdb$database;
select * from sp_test_1;
set term ^;
execute block returns(eb_text varchar(10) character set utf8) as
begin
execute procedure sp_test_2 returning_values :eb_text;
suspend;
end
^
set term ;^
"""
act = isql_act('db', test_script, substitutions = [('[-]?At line \\d+.*', '')])
expected_stdout = """
Statement failed, SQLSTATE = 22021
unsuccessful metadata update
-CREATE VIEW V_TEST_1 failed
-Dynamic SQL Error
-SQL error code = -204
-COLLATION MISSED_COLL for CHARACTER SET UTF8 is not defined
Statement failed, SQLSTATE = 22021
unsuccessful metadata update
-CREATE PROCEDURE SP_TEST_1 failed
-Dynamic SQL Error
-SQL error code = -204
-COLLATION MISSED_COLL for CHARACTER SET UTF8 is not defined
Statement failed, SQLSTATE = 22021
unsuccessful metadata update
-CREATE PROCEDURE SP_TEST_2 failed
-Dynamic SQL Error
-SQL error code = -204
-COLLATION MISSED_COLL for CHARACTER SET UTF8 is not defined
Statement failed, SQLSTATE = 22021
unsuccessful metadata update
-CREATE FUNCTION FN_TEST_1 failed
-Dynamic SQL Error
-SQL error code = -204
-COLLATION MISSED_COLL for CHARACTER SET UTF8 is not defined
Statement failed, SQLSTATE = 42S02
Dynamic SQL Error
-SQL error code = -204
-Table unknown
-V_TEST_1
Statement failed, SQLSTATE = 39000
Dynamic SQL Error
-SQL error code = -804
-Function unknown
-FN_TEST_1
Statement failed, SQLSTATE = 42S02
Dynamic SQL Error
-SQL error code = -204
-Table unknown
-SP_TEST_1
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -204
-Procedure unknown
-SP_TEST_2
"""
@pytest.mark.version('>=6.0')
def test_1(act: Action):
act.expected_stdout = expected_stdout
act.execute(combine_output = True)
assert act.clean_stdout == act.clean_expected_stdout