|
7 | 7 | DESCRIPTION:
|
8 | 8 | JIRA: CORE-3672
|
9 | 9 | FBTEST: bugs.core_3672
|
| 10 | +NOTES: |
| 11 | + [27.06.2025] pzotov |
| 12 | + Added 'SCHEMA_PREFIX' to be substituted in expected_out on FB 6.x |
| 13 | + Checked on 6.0.0.876; 5.0.3.1668; 4.0.6.3214; 3.0.13.33813. |
10 | 14 | """
|
11 | 15 |
|
12 | 16 | import pytest
|
13 | 17 | from firebird.qa import *
|
14 | 18 |
|
15 | 19 | db = db_factory()
|
16 | 20 |
|
17 |
| -test_script = """ |
| 21 | +IDX_EXPR_1 = 'substring(col1 from 1 for 169)' |
| 22 | +IDX_EXPR_2 = 'substring(trim( col2 from col1 ) from 1 for 169) ' |
| 23 | +IDX_EXPR_3 = 'col2' |
| 24 | +IDX_EXPR_4 = 'substring(col2 from 1 for 169)' |
| 25 | +IDX_EXPR_5 = 'col3' |
| 26 | +IDX_EXPR_6 = 'substring(col3 from 1 for 169)' |
| 27 | + |
| 28 | +test_script = f""" |
18 | 29 | recreate table test(
|
19 | 30 | col1 varchar(8190) character set utf8 collate unicode_ci_ai
|
20 | 31 | ,col2 computed by ( substring(col1 from 1 for 169) )
|
|
27 | 38 | -- max_key_length = floor( (page_size / 4 - 9) / N ) = 169 characters.
|
28 | 39 |
|
29 | 40 | -- Verify that we CAN do that w/o error:
|
30 |
| - create index test_col1_idx_a on test computed by ( substring(col1 from 1 for 169) ); |
31 |
| - create index test_col1_idx_b on test computed by ( substring(trim( col2 from col1 ) from 1 for 169) ); |
32 |
| - create index test_col2_idx_a on test computed by ( col2 ); |
33 |
| - create index test_col2_idx_b on test computed by ( substring(col2 from 1 for 169) ); |
34 |
| - create index test_col3_idx_a on test computed by ( col3 ); |
35 |
| - create index test_col3_idx_b on test computed by ( substring(col3 from 1 for 169) ); |
| 41 | + create index test_col1_idx_a on test computed by ( {IDX_EXPR_1} ); |
| 42 | + create index test_col1_idx_b on test computed by ( {IDX_EXPR_2} ); |
| 43 | + create index test_col2_idx_a on test computed by ( {IDX_EXPR_3} ); |
| 44 | + create index test_col2_idx_b on test computed by ( {IDX_EXPR_4} ); |
| 45 | + create index test_col3_idx_a on test computed by ( {IDX_EXPR_5} ); |
| 46 | + create index test_col3_idx_b on test computed by ( {IDX_EXPR_6} ); |
36 | 47 | commit;
|
37 | 48 | -- Confirmed for 2.5.5: "-key size exceeds implementation restriction"
|
38 | 49 |
|
|
46 | 57 |
|
47 | 58 | act = isql_act('db', test_script)
|
48 | 59 |
|
49 |
| -expected_stdout = """ |
50 |
| - TEST_COL1_IDX_A INDEX ON TEST COMPUTED BY ( substring(col1 from 1 for 169) ) |
51 |
| - TEST_COL1_IDX_B INDEX ON TEST COMPUTED BY ( substring(trim( col2 from col1 ) from 1 for 169) ) |
52 |
| - TEST_COL2_IDX_A INDEX ON TEST COMPUTED BY ( col2 ) |
53 |
| - TEST_COL2_IDX_B INDEX ON TEST COMPUTED BY ( substring(col2 from 1 for 169) ) |
54 |
| - TEST_COL3_IDX_A INDEX ON TEST COMPUTED BY ( col3 ) |
55 |
| - TEST_COL3_IDX_B INDEX ON TEST COMPUTED BY ( substring(col3 from 1 for 169) ) |
56 |
| -""" |
57 |
| - |
58 |
| -@pytest.mark.version('>=3.0') |
| 60 | +@pytest.mark.version('>=3') |
59 | 61 | def test_1(act: Action):
|
| 62 | + |
| 63 | + SCHEMA_PREFIX = '' if act.is_version('<6') else 'PUBLIC.' |
| 64 | + |
| 65 | + expected_stdout = f""" |
| 66 | + {SCHEMA_PREFIX}TEST_COL1_IDX_A INDEX ON TEST COMPUTED BY ( {IDX_EXPR_1} ) |
| 67 | + {SCHEMA_PREFIX}TEST_COL1_IDX_B INDEX ON TEST COMPUTED BY ( {IDX_EXPR_2} ) |
| 68 | + {SCHEMA_PREFIX}TEST_COL2_IDX_A INDEX ON TEST COMPUTED BY ( {IDX_EXPR_3} ) |
| 69 | + {SCHEMA_PREFIX}TEST_COL2_IDX_B INDEX ON TEST COMPUTED BY ( {IDX_EXPR_4} ) |
| 70 | + {SCHEMA_PREFIX}TEST_COL3_IDX_A INDEX ON TEST COMPUTED BY ( {IDX_EXPR_5} ) |
| 71 | + {SCHEMA_PREFIX}TEST_COL3_IDX_B INDEX ON TEST COMPUTED BY ( {IDX_EXPR_6} ) |
| 72 | + """ |
| 73 | + |
60 | 74 | act.expected_stdout = expected_stdout
|
61 |
| - act.execute() |
| 75 | + act.execute(combine_output = True) |
62 | 76 | assert act.clean_stdout == act.clean_expected_stdout
|
63 |
| - |
|
0 commit comments