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

378 lines
11 KiB
Python
Raw Normal View History

2021-04-26 20:07:00 +02:00
#coding:utf-8
2022-01-23 20:41:55 +01:00
"""
ID: issue-4451
ISSUE: 4451
TITLE: Firebird crash when executing an stored procedure called by a trigger that converts string to upper
DESCRIPTION:
JIRA: CORE-4123
FBTEST: bugs.core_4123
2022-01-23 20:41:55 +01:00
"""
2021-04-26 20:07:00 +02:00
import pytest
2021-11-18 20:15:37 +01:00
from pathlib import Path
2022-01-23 20:41:55 +01:00
from firebird.qa import *
db = db_factory()
script_file = temp_file('test-script.sql')
act = python_act('db')
test_script = """
set list on;
with recursive
d as (
select s, char_length(s) n
from (
-- http://www.ic.unicamp.br/~stolfi/EXPORT/www/ISO-8859-1-Encoding.html
-- ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
select 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ' as s
from rdb$database
)
)
,r as(select 1 as i from rdb$database union all select r.i+1 from r where r.i<128)
,c as(
select
substring(d.s from r.i for 1) as char_as_is
,upper( substring(d.s from r.i for 1) ) char_upper
,lower( substring(d.s from r.i for 1) ) char_lower
from d, r
where r.i <= d.n
)
select c.char_as_is, char_upper, char_lower, iif(char_upper = char_lower, '1',' ') is_upper_equ_lower
from c
order by 1
;
"""
expected_stdout = """
2021-04-26 20:07:00 +02:00
CHAR_AS_IS À
CHAR_UPPER À
CHAR_LOWER à
IS_UPPER_EQU_LOWER
CHAR_AS_IS Á
CHAR_UPPER Á
CHAR_LOWER á
IS_UPPER_EQU_LOWER
CHAR_AS_IS Â
CHAR_UPPER Â
CHAR_LOWER â
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ã
CHAR_UPPER Ã
CHAR_LOWER ã
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ä
CHAR_UPPER Ä
CHAR_LOWER ä
IS_UPPER_EQU_LOWER
CHAR_AS_IS Å
CHAR_UPPER Å
CHAR_LOWER å
IS_UPPER_EQU_LOWER
CHAR_AS_IS Æ
CHAR_UPPER Æ
CHAR_LOWER æ
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ç
CHAR_UPPER Ç
CHAR_LOWER ç
IS_UPPER_EQU_LOWER
CHAR_AS_IS È
CHAR_UPPER È
CHAR_LOWER è
IS_UPPER_EQU_LOWER
CHAR_AS_IS É
CHAR_UPPER É
CHAR_LOWER é
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ê
CHAR_UPPER Ê
CHAR_LOWER ê
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ë
CHAR_UPPER Ë
CHAR_LOWER ë
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ì
CHAR_UPPER Ì
CHAR_LOWER ì
IS_UPPER_EQU_LOWER
CHAR_AS_IS Í
CHAR_UPPER Í
CHAR_LOWER í
IS_UPPER_EQU_LOWER
CHAR_AS_IS Î
CHAR_UPPER Î
CHAR_LOWER î
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ï
CHAR_UPPER Ï
CHAR_LOWER ï
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ð
CHAR_UPPER Ð
CHAR_LOWER ð
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ñ
CHAR_UPPER Ñ
CHAR_LOWER ñ
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ò
CHAR_UPPER Ò
CHAR_LOWER ò
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ó
CHAR_UPPER Ó
CHAR_LOWER ó
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ô
CHAR_UPPER Ô
CHAR_LOWER ô
IS_UPPER_EQU_LOWER
CHAR_AS_IS Õ
CHAR_UPPER Õ
CHAR_LOWER õ
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ö
CHAR_UPPER Ö
CHAR_LOWER ö
IS_UPPER_EQU_LOWER
CHAR_AS_IS ×
CHAR_UPPER ×
CHAR_LOWER ×
IS_UPPER_EQU_LOWER 1
CHAR_AS_IS Ø
CHAR_UPPER Ø
CHAR_LOWER ø
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ù
CHAR_UPPER Ù
CHAR_LOWER ù
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ú
CHAR_UPPER Ú
CHAR_LOWER ú
IS_UPPER_EQU_LOWER
CHAR_AS_IS Û
CHAR_UPPER Û
CHAR_LOWER û
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ü
CHAR_UPPER Ü
CHAR_LOWER ü
IS_UPPER_EQU_LOWER
CHAR_AS_IS Ý
CHAR_UPPER Ý
CHAR_LOWER ý
IS_UPPER_EQU_LOWER
CHAR_AS_IS Þ
CHAR_UPPER Þ
CHAR_LOWER þ
IS_UPPER_EQU_LOWER
CHAR_AS_IS ß
CHAR_UPPER ß
CHAR_LOWER ß
IS_UPPER_EQU_LOWER 1
CHAR_AS_IS à
CHAR_UPPER À
CHAR_LOWER à
IS_UPPER_EQU_LOWER
CHAR_AS_IS á
CHAR_UPPER Á
CHAR_LOWER á
IS_UPPER_EQU_LOWER
CHAR_AS_IS â
CHAR_UPPER Â
CHAR_LOWER â
IS_UPPER_EQU_LOWER
CHAR_AS_IS ã
CHAR_UPPER Ã
CHAR_LOWER ã
IS_UPPER_EQU_LOWER
CHAR_AS_IS ä
CHAR_UPPER Ä
CHAR_LOWER ä
IS_UPPER_EQU_LOWER
CHAR_AS_IS å
CHAR_UPPER Å
CHAR_LOWER å
IS_UPPER_EQU_LOWER
CHAR_AS_IS æ
CHAR_UPPER Æ
CHAR_LOWER æ
IS_UPPER_EQU_LOWER
CHAR_AS_IS ç
CHAR_UPPER Ç
CHAR_LOWER ç
IS_UPPER_EQU_LOWER
CHAR_AS_IS è
CHAR_UPPER È
CHAR_LOWER è
IS_UPPER_EQU_LOWER
CHAR_AS_IS é
CHAR_UPPER É
CHAR_LOWER é
IS_UPPER_EQU_LOWER
CHAR_AS_IS ê
CHAR_UPPER Ê
CHAR_LOWER ê
IS_UPPER_EQU_LOWER
CHAR_AS_IS ë
CHAR_UPPER Ë
CHAR_LOWER ë
IS_UPPER_EQU_LOWER
CHAR_AS_IS ì
CHAR_UPPER Ì
CHAR_LOWER ì
IS_UPPER_EQU_LOWER
CHAR_AS_IS í
CHAR_UPPER Í
CHAR_LOWER í
IS_UPPER_EQU_LOWER
CHAR_AS_IS î
CHAR_UPPER Î
CHAR_LOWER î
IS_UPPER_EQU_LOWER
CHAR_AS_IS ï
CHAR_UPPER Ï
CHAR_LOWER ï
IS_UPPER_EQU_LOWER
CHAR_AS_IS ð
CHAR_UPPER Ð
CHAR_LOWER ð
IS_UPPER_EQU_LOWER
CHAR_AS_IS ñ
CHAR_UPPER Ñ
CHAR_LOWER ñ
IS_UPPER_EQU_LOWER
CHAR_AS_IS ò
CHAR_UPPER Ò
CHAR_LOWER ò
IS_UPPER_EQU_LOWER
CHAR_AS_IS ó
CHAR_UPPER Ó
CHAR_LOWER ó
IS_UPPER_EQU_LOWER
CHAR_AS_IS ô
CHAR_UPPER Ô
CHAR_LOWER ô
IS_UPPER_EQU_LOWER
CHAR_AS_IS õ
CHAR_UPPER Õ
CHAR_LOWER õ
IS_UPPER_EQU_LOWER
CHAR_AS_IS ö
CHAR_UPPER Ö
CHAR_LOWER ö
IS_UPPER_EQU_LOWER
CHAR_AS_IS ÷
CHAR_UPPER ÷
CHAR_LOWER ÷
IS_UPPER_EQU_LOWER 1
CHAR_AS_IS ø
CHAR_UPPER Ø
CHAR_LOWER ø
IS_UPPER_EQU_LOWER
CHAR_AS_IS ù
CHAR_UPPER Ù
CHAR_LOWER ù
IS_UPPER_EQU_LOWER
CHAR_AS_IS ú
CHAR_UPPER Ú
CHAR_LOWER ú
IS_UPPER_EQU_LOWER
CHAR_AS_IS û
CHAR_UPPER Û
CHAR_LOWER û
IS_UPPER_EQU_LOWER
CHAR_AS_IS ü
CHAR_UPPER Ü
CHAR_LOWER ü
IS_UPPER_EQU_LOWER
CHAR_AS_IS ý
CHAR_UPPER Ý
CHAR_LOWER ý
IS_UPPER_EQU_LOWER
CHAR_AS_IS þ
CHAR_UPPER Þ
CHAR_LOWER þ
IS_UPPER_EQU_LOWER
CHAR_AS_IS ÿ
CHAR_UPPER ÿ
CHAR_LOWER ÿ
IS_UPPER_EQU_LOWER 1
2021-11-18 20:15:37 +01:00
"""
2022-01-23 20:41:55 +01:00
@pytest.mark.version('>=3')
def test_1(act: Action, script_file: Path):
script_file.write_text(test_script, encoding='iso-8859-1')
act.expected_stdout = expected_stdout
act.isql(switches=['-b', '-q'], input_file=script_file, charset='ISO8859_1')
assert act.clean_stdout == act.clean_expected_stdout
2021-04-26 20:07:00 +02:00