Skip to content

Commit 70bb2b0

Browse files
authored
Merge pull request #1927 from dbcli/RW/add-test-coverage-doris-sqlexecute
Add Apache Doris tests to `sqlexecute.py`
2 parents 5d90ae0 + f4bfd9c commit 70bb2b0

2 files changed

Lines changed: 71 additions & 0 deletions

File tree

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Internal
77
* Add test coverage for `client_query.py`.
88
* Improve test coverage for `output.py`.
99
* Add test coverage for `special/__init__.py`.
10+
* Add Apache Doris tests to `sqlexecute.py`.
1011

1112

1213
1.74.0 (2026/06/06)

test/pytests/test_sqlexecute.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,22 @@ def fake_connect(**kwargs):
786786
assert executor.sandbox_mode is False
787787

788788

789+
def test_connect_replaces_mysql_server_info_when_doris_probe_succeeds(monkeypatch) -> None:
790+
executor = make_executor_for_connect_tests()
791+
executor.ssl = None
792+
new_conn = DummyConnection(server_version='8.0.36')
793+
794+
monkeypatch.setattr(sqlexecute.pymysql, 'connect', lambda **_kwargs: new_conn)
795+
monkeypatch.setattr(SQLExecute, 'reset_connection_id', lambda self: None)
796+
monkeypatch.setattr(SQLExecute, '_probe_doris_version', lambda self: '2.1.7')
797+
798+
executor.connect()
799+
800+
assert executor.server_info is not None
801+
assert executor.server_info.species == ServerSpecies.Doris
802+
assert executor.server_info.version_str == '2.1.7'
803+
804+
789805
def test_connect_falls_back_to_sandbox_on_1820(monkeypatch) -> None:
790806
executor = make_executor_for_connect_tests()
791807
executor.ssl = None
@@ -952,6 +968,60 @@ def connect(self) -> None:
952968
assert original_calls == [(('latin1',), {})]
953969

954970

971+
def test_probe_doris_version_returns_none_without_connection() -> None:
972+
executor = make_executor_for_run_tests()
973+
executor.sandbox_mode = False
974+
executor.conn = None
975+
976+
assert executor._probe_doris_version() is None
977+
978+
979+
def test_probe_doris_version_returns_none_in_sandbox_mode() -> None:
980+
executor = make_executor_for_run_tests(FakeMetadataConnection(FakeMetadataCursor([])))
981+
executor.sandbox_mode = True
982+
983+
assert executor._probe_doris_version() is None
984+
985+
986+
def test_probe_doris_version_returns_none_when_query_has_no_rows() -> None:
987+
executor = make_executor_for_run_tests(FakeMetadataConnection(FakeMetadataCursor([])))
988+
executor.sandbox_mode = False
989+
990+
assert executor._probe_doris_version() is None
991+
992+
993+
def test_probe_doris_version_returns_none_when_server_is_not_doris() -> None:
994+
cursor = FakeMetadataCursor([('MySQL Community Server - GPL', '8.0.36')])
995+
executor = make_executor_for_run_tests(FakeMetadataConnection(cursor))
996+
executor.sandbox_mode = False
997+
998+
assert executor._probe_doris_version() is None
999+
1000+
1001+
def test_probe_doris_version_extracts_version_from_comment() -> None:
1002+
cursor = FakeMetadataCursor([('doris-2.1.7-rc01', '8.0.0')])
1003+
executor = make_executor_for_run_tests(FakeMetadataConnection(cursor))
1004+
executor.sandbox_mode = False
1005+
1006+
assert executor._probe_doris_version() == '2.1.7'
1007+
1008+
1009+
def test_probe_doris_version_falls_back_to_server_version() -> None:
1010+
cursor = FakeMetadataCursor([('Apache Doris', 'doris-3.0.1')])
1011+
executor = make_executor_for_run_tests(FakeMetadataConnection(cursor))
1012+
executor.sandbox_mode = False
1013+
1014+
assert executor._probe_doris_version() == '3.0.1'
1015+
1016+
1017+
def test_probe_doris_version_returns_empty_string_when_doris_version_cannot_be_parsed() -> None:
1018+
cursor = FakeMetadataCursor([('Apache Doris', 'not parseable')])
1019+
executor = make_executor_for_run_tests(FakeMetadataConnection(cursor))
1020+
executor.sandbox_mode = False
1021+
1022+
assert executor._probe_doris_version() == ''
1023+
1024+
9551025
def test_run_returns_empty_result_for_blank_statement(monkeypatch) -> None:
9561026
split_inputs: list[str] = []
9571027

0 commit comments

Comments
 (0)