Skip to content

Commit 674b360

Browse files
committed
Added/Updated tests\bugs\core_5093_test.py: expected_output depends on major FB version, see definition of 'blob_new_cset' variable/
1 parent 6248932 commit 674b360

File tree

1 file changed

+76
-63
lines changed

1 file changed

+76
-63
lines changed

tests/bugs/core_5093_test.py

Lines changed: 76 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
NOTES:
1616
[23.01.2024] pzotov
1717
Adjusted output after fixed gh-7924: column 'b_added_charset' character set must be changed to utf8.
18+
19+
[24.01.2024] pzotov
20+
Currently gh-7924 fixed only for FB 6.x, thus charsets for FB 3.x ... 5.x will not be changed.
21+
Because of that, expected_output depends on major FB version, see its definition in 'blob_new_cset'.
22+
Checked on 6.0.0.223, 5.0.1.1322
1823
"""
1924

2025
import pytest
@@ -56,34 +61,33 @@
5661
act = python_act('db', substitutions=substitutions)
5762

5863
sql_script = """
59-
alter table t1
60-
alter si type int computed by (32767) -- LONG
61-
,alter bi type int computed by (2147483647) -- LONG
62-
,alter s2 type smallint computed by ( 1 + mod(bi, nullif(si,0)) ) -- SHORT
63-
64-
,alter dx type float computed by( pi()/2 ) -- FLOAT
65-
,alter fx type float computed by (dx*dx*dx) -- FLOAT
66-
,alter nf type bigint computed by (fx * fx) -- INT64
67-
68-
,alter dt type date computed by ('today') -- DATE
69-
,alter tm type timestamp computed by ('now') -- TIMESTAMP
70-
71-
,alter c_change_cb_value type char character set win1251 computed by ('Ё') -- TEXT
72-
,alter c_change_charset type char character set utf8 computed by ('Æ') -- TEXT
73-
,alter c_change_length type char(2) computed by ('∑∞') -- TEXT
74-
75-
-- All these fields, of course, should remain in type = BLOB,
76-
-- but when charset is removed (field "b_remove_charset") then blob subtype has to be changed to 0,
77-
-- and when we ADD charset (field "b_added_charset") then blob subtype has to be changed to 1.
78-
,alter b_change_cb_value type blob character set win1251 computed by ('Ё') -- BLOB
79-
,alter b_change_charset type blob character set iso8859_1 computed by ('å') -- BLOB
80-
,alter b_remove_charset type blob /*character set win1252 */ computed by ('Æ') -- BLOB
81-
,alter b_added_charset type blob character set utf8 computed by ('∞') -- BLOB
82-
;
83-
commit;
84-
set sqlda_display on;
85-
select * from t1;
86-
exit;
64+
alter table t1
65+
alter si type int computed by (32767) -- LONG
66+
,alter bi type int computed by (2147483647) -- LONG
67+
,alter s2 type smallint computed by ( 1 + mod(bi, nullif(si,0)) ) -- SHORT
68+
69+
,alter dx type float computed by( pi()/2 ) -- FLOAT
70+
,alter fx type float computed by (dx*dx*dx) -- FLOAT
71+
,alter nf type bigint computed by (fx * fx) -- INT64
72+
73+
,alter dt type date computed by ('today') -- DATE
74+
,alter tm type timestamp computed by ('now') -- TIMESTAMP
75+
76+
,alter c_change_cb_value type char character set win1251 computed by ('Ё') -- TEXT
77+
,alter c_change_charset type char character set utf8 computed by ('Æ') -- TEXT
78+
,alter c_change_length type char(2) computed by ('∑∞') -- TEXT
79+
80+
-- All these fields, of course, should remain in type = BLOB,
81+
-- but when charset is removed (field "b_remove_charset") then blob subtype has to be changed to 0,
82+
-- and when we ADD charset (field "b_added_charset") then blob subtype has to be changed to 1.
83+
,alter b_change_cb_value type blob character set win1251 computed by ('Ё') -- BLOB
84+
,alter b_change_charset type blob character set iso8859_1 computed by ('å') -- BLOB
85+
,alter b_remove_charset type blob /*character set win1252 */ computed by ('Æ') -- BLOB
86+
,alter b_added_charset type blob character set utf8 computed by ('∞') -- BLOB
87+
;
88+
commit;
89+
set sqlda_display on;
90+
select * from t1;
8791
"""
8892

8993
expected_stdout_a = """
@@ -121,49 +125,58 @@
121125
: NAME: B_ADDED_CHARSET ALIAS: B_ADDED_CHARSET
122126
"""
123127

124-
expected_stdout_b = """
125-
01: SQLTYPE: 496 LONG NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
126-
: NAME: N0 ALIAS: N0
127-
02: SQLTYPE: 496 LONG NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
128-
: NAME: SI ALIAS: SI
129-
03: SQLTYPE: 496 LONG NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
130-
: NAME: BI ALIAS: BI
131-
04: SQLTYPE: 500 SHORT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 2
132-
: NAME: S2 ALIAS: S2
133-
05: SQLTYPE: 482 FLOAT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
134-
: NAME: DX ALIAS: DX
135-
06: SQLTYPE: 482 FLOAT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
136-
: NAME: FX ALIAS: FX
137-
07: SQLTYPE: 580 INT64 NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 8
138-
: NAME: NF ALIAS: NF
139-
08: SQLTYPE: 570 SQL DATE NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
140-
: NAME: DT ALIAS: DT
141-
09: SQLTYPE: 510 TIMESTAMP NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 8
142-
: NAME: TM ALIAS: TM
143-
10: SQLTYPE: 452 TEXT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4 CHARSET: 4 UTF8
144-
: NAME: C_CHANGE_CB_VALUE ALIAS: C_CHANGE_CB_VALUE
145-
11: SQLTYPE: 452 TEXT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4 CHARSET: 4 UTF8
146-
: NAME: C_CHANGE_CHARSET ALIAS: C_CHANGE_CHARSET
147-
12: SQLTYPE: 452 TEXT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 8 CHARSET: 4 UTF8
148-
: NAME: C_CHANGE_LENGTH ALIAS: C_CHANGE_LENGTH
149-
13: SQLTYPE: 520 BLOB NULLABLE SCALE: 0 SUBTYPE: 1 LEN: 8 CHARSET: 4 UTF8
150-
: NAME: B_CHANGE_CB_VALUE ALIAS: B_CHANGE_CB_VALUE
151-
14: SQLTYPE: 520 BLOB NULLABLE SCALE: 0 SUBTYPE: 1 LEN: 8 CHARSET: 4 UTF8
152-
: NAME: B_CHANGE_CHARSET ALIAS: B_CHANGE_CHARSET
153-
15: SQLTYPE: 520 BLOB NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 8
154-
: NAME: B_REMOVE_CHARSET ALIAS: B_REMOVE_CHARSET
155-
16: SQLTYPE: 520 BLOB NULLABLE SCALE: 0 SUBTYPE: 1 LEN: 8 CHARSET: 4 UTF8
156-
: NAME: B_ADDED_CHARSET ALIAS: B_ADDED_CHARSET
157-
"""
128+
BLOB_NEW_CSET_5X = 'CHARSET: 0 NONE'
129+
BLOB_NEW_CSET_6X = 'CHARSET: 4 UTF8'
158130

159131
@pytest.mark.version('>=3.0')
160132
def test_1(act: Action):
161133
act.expected_stdout = expected_stdout_a
162134
act.isql(switches=['-q', '-m'], input='set sqlda_display on; select * from t1;')
163135
act.stdout = act.stdout.upper()
164136
assert act.clean_stdout == act.clean_expected_stdout
165-
#
166137
act.reset()
138+
139+
####################################################
140+
# ::: NB :::
141+
# We have to separate result for B_ADDED_CHARSET because it differs in FB 6.x and older versions
142+
#
143+
blob_new_cset = BLOB_NEW_CSET_5X if act.is_version('<6') else BLOB_NEW_CSET_6X
144+
####################################################
145+
expected_stdout_b = f"""
146+
01: SQLTYPE: 496 LONG NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
147+
: NAME: N0 ALIAS: N0
148+
02: SQLTYPE: 496 LONG NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
149+
: NAME: SI ALIAS: SI
150+
03: SQLTYPE: 496 LONG NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
151+
: NAME: BI ALIAS: BI
152+
04: SQLTYPE: 500 SHORT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 2
153+
: NAME: S2 ALIAS: S2
154+
05: SQLTYPE: 482 FLOAT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
155+
: NAME: DX ALIAS: DX
156+
06: SQLTYPE: 482 FLOAT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
157+
: NAME: FX ALIAS: FX
158+
07: SQLTYPE: 580 INT64 NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 8
159+
: NAME: NF ALIAS: NF
160+
08: SQLTYPE: 570 SQL DATE NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4
161+
: NAME: DT ALIAS: DT
162+
09: SQLTYPE: 510 TIMESTAMP NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 8
163+
: NAME: TM ALIAS: TM
164+
10: SQLTYPE: 452 TEXT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4 CHARSET: 4 UTF8
165+
: NAME: C_CHANGE_CB_VALUE ALIAS: C_CHANGE_CB_VALUE
166+
11: SQLTYPE: 452 TEXT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 4 CHARSET: 4 UTF8
167+
: NAME: C_CHANGE_CHARSET ALIAS: C_CHANGE_CHARSET
168+
12: SQLTYPE: 452 TEXT NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 8 CHARSET: 4 UTF8
169+
: NAME: C_CHANGE_LENGTH ALIAS: C_CHANGE_LENGTH
170+
13: SQLTYPE: 520 BLOB NULLABLE SCALE: 0 SUBTYPE: 1 LEN: 8 CHARSET: 4 UTF8
171+
: NAME: B_CHANGE_CB_VALUE ALIAS: B_CHANGE_CB_VALUE
172+
14: SQLTYPE: 520 BLOB NULLABLE SCALE: 0 SUBTYPE: 1 LEN: 8 CHARSET: 4 UTF8
173+
: NAME: B_CHANGE_CHARSET ALIAS: B_CHANGE_CHARSET
174+
15: SQLTYPE: 520 BLOB NULLABLE SCALE: 0 SUBTYPE: 0 LEN: 8
175+
: NAME: B_REMOVE_CHARSET ALIAS: B_REMOVE_CHARSET
176+
16: SQLTYPE: 520 BLOB NULLABLE SCALE: 0 SUBTYPE: 1 LEN: 8 {blob_new_cset}
177+
: NAME: B_ADDED_CHARSET ALIAS: B_ADDED_CHARSET
178+
"""
179+
167180
act.expected_stdout = expected_stdout_b
168181
act.isql(switches=['-q', '-m'], input=sql_script)
169182
act.stdout = act.stdout.upper()

0 commit comments

Comments
 (0)