diff --git a/tests/bugs/gh_5749_test.py b/tests/bugs/gh_5749_test.py new file mode 100644 index 00000000..42c702aa --- /dev/null +++ b/tests/bugs/gh_5749_test.py @@ -0,0 +1,63 @@ +#coding:utf-8 + +""" +ID: issue-5749 +ISSUE: 5749 +TITLE: Token unknown error on formfeed in query [CORE5479] +DESCRIPTION: + Test makes temporary .sql file and writes there several queries like: + select 'some_text'from rdb$database; + - where is every character from following list: + findstr /i /c:"CHR_WHITE," %fb_sources_home%/master/src/dsql/chars.h + Output: + 009 CHR_WHITE, // 0x9 + 010 CHR_WHITE, // 0xA + 012 CHR_WHITE, // 0xC + 013 CHR_WHITE, // 0xD + 032 CHR_WHITE, // this can be skipped from check + + NB: character \u000B [currently] NOT present in this list. + +NOTES: + [18.02.2023] pzotov + Confirmed problem on 5.0.0.736 (18-sep-2022): literal 0xC ('\u000c') could not be used as delimiter, got: + Statement failed, SQLSTATE = 42000 + Dynamic SQL Error + -SQL error code = -104 + -Token unknown - line 1, column 15 + - + Checked on 5.0.0.742 - all OK. +""" + +import pytest +from firebird.qa import * +from pathlib import Path + +db = db_factory() +act = python_act('db') + +tmp_file = temp_file('gh_5749_tmp.sql') + +expected_stdout = """ + CONSTANT u0009 + CONSTANT u000A + CONSTANT u000C + CONSTANT u000D +""" + +whitespace_sql = u"""set list on; +select 'u0009'\u0009from rdb$database; +select 'u000A'\u000Afrom rdb$database; +select 'u000C'\u000Cfrom rdb$database; +select 'u000D'\u000Dfrom rdb$database; +""" +# NB: select 'u000B'\u000Bfrom rdb$database; -- FAILS with token unknown. + +@pytest.mark.version('>=5.0') +def test_1(act: Action, tmp_file: Path): + + tmp_file.write_bytes(whitespace_sql.encode('utf-8')) + + act.expected_stdout = expected_stdout + act.isql(switches=['-q'], input_file=tmp_file, charset='utf-8', io_enc='utf-8', combine_output = True) + assert act.clean_stdout == act.clean_expected_stdout