mirror of
https://github.com/FirebirdSQL/firebird-qa.git
synced 2025-02-02 02:40:42 +01:00
Added/Updated bugs\core_5222_test.py: test must be executed on FB 4.x+ in the same wayt as for FB 3.x: we use ReadConsistency = 0 in firebird.conf for this purpose. See details in the notes. Checked on 4.0.1.2692, 3.0.8.33535 - both on Linux and Windows.
This commit is contained in:
parent
32e9b1f04b
commit
037c32b4dc
@ -11,22 +11,18 @@ DESCRIPTION:
|
|||||||
async. start THREE child ISQLs sessions, one or two of them always raise exception after
|
async. start THREE child ISQLs sessions, one or two of them always raise exception after
|
||||||
few seconds with text: 'deadlock / update conflicts' and could not finish its job.
|
few seconds with text: 'deadlock / update conflicts' and could not finish its job.
|
||||||
NOTES:
|
NOTES:
|
||||||
[12.08.2018]
|
[06.06.2022] pzotov
|
||||||
It is unclear now how this test can be implemented on 4.0 after introduction of READ CONSISTENCY
|
It was decided to set ReadConsistency = 0 in firebird.conf of FB 4.x+
|
||||||
with default value ReadConsistency = 1. According to doc:
|
There is ability to start Tx in ReadConsistency when this parameter has such (NON-default) value
|
||||||
===
|
by explicitly specifying such isolation level:
|
||||||
If ReadConsistency set to 1 (by default) engine ignores
|
======
|
||||||
[NO] RECORD VERSION flags and makes all read-committed
|
If ReadConsistency is set to 0 - flags [NO] RECORD VERSION takes effect as in previous Firebird
|
||||||
transactions READ COMMITTED READ CONSISTENCY.
|
versions. READ COMMITTED READ CONSISTENCY isolation level should be specified explicitly by
|
||||||
===
|
application - in TPB or using SQL syntax.
|
||||||
|
======
|
||||||
|
See letter from pcisar 11-feb-2022 17:53, subj: "pytest + firebird-qa plugin with storing outcomes..."
|
||||||
|
Checked on 4.0.1.2692, 3.0.8.33535 - both on Linux and Windows.
|
||||||
|
|
||||||
Also, doc\\README.read_consistency.md says that:
|
|
||||||
"Old read-committed isolation modes (**RECORD VERSION** and **NO RECORD VERSION**) are still
|
|
||||||
allowed but considered as legacy and not recommended to use."
|
|
||||||
|
|
||||||
This mean that one can NOT to check issues of this ticket under 4.0 using default (and recommended)
|
|
||||||
value of config parameter 'ReadConsistency'.
|
|
||||||
For that reason it was decided to make new EMPTY section of test for 4.0.
|
|
||||||
JIRA: CORE-5222
|
JIRA: CORE-5222
|
||||||
FBTEST: bugs.core_5222
|
FBTEST: bugs.core_5222
|
||||||
"""
|
"""
|
||||||
@ -40,8 +36,6 @@ import re
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from firebird.qa import *
|
from firebird.qa import *
|
||||||
|
|
||||||
# version: 3.0
|
|
||||||
|
|
||||||
init_script = """
|
init_script = """
|
||||||
create or alter procedure p_increment as begin end;
|
create or alter procedure p_increment as begin end;
|
||||||
commit;
|
commit;
|
||||||
@ -138,7 +132,7 @@ PLANNED_DML_ATTACHMENTS = 3
|
|||||||
run_sql = temp_file('core_5222_run.sql')
|
run_sql = temp_file('core_5222_run.sql')
|
||||||
dml_logs = temp_files([f'tmp_dml_5222_{i+1}' for i in range(PLANNED_DML_ATTACHMENTS)])
|
dml_logs = temp_files([f'tmp_dml_5222_{i+1}' for i in range(PLANNED_DML_ATTACHMENTS)])
|
||||||
|
|
||||||
@pytest.mark.version('>=3.0,<4')
|
@pytest.mark.version('>=3.0')
|
||||||
def test_1(act: Action, run_sql: Path, dml_logs: List[Path], capsys):
|
def test_1(act: Action, run_sql: Path, dml_logs: List[Path], capsys):
|
||||||
pattern = re.compile("BEFORE_PROC*|PROC_START*|SELECTED_ID*|PROC_FINISH*|AFTER_PROC*")
|
pattern = re.compile("BEFORE_PROC*|PROC_START*|SELECTED_ID*|PROC_FINISH*|AFTER_PROC*")
|
||||||
run_sql.write_text(test_script)
|
run_sql.write_text(test_script)
|
||||||
@ -185,10 +179,3 @@ def test_1(act: Action, run_sql: Path, dml_logs: List[Path], capsys):
|
|||||||
act.expected_stdout = expected_stdout
|
act.expected_stdout = expected_stdout
|
||||||
act.stdout = capsys.readouterr().out
|
act.stdout = capsys.readouterr().out
|
||||||
assert act.clean_stdout == act.clean_expected_stdout
|
assert act.clean_stdout == act.clean_expected_stdout
|
||||||
|
|
||||||
# version: 4.0
|
|
||||||
|
|
||||||
@pytest.mark.skip('FIXME: Not IMPLEMENTED')
|
|
||||||
@pytest.mark.version('>=4.0')
|
|
||||||
def test_2(act: Action):
|
|
||||||
pytest.fail("Not IMPLEMENTED")
|
|
||||||
|
Loading…
Reference in New Issue
Block a user