@@ -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+
789805def 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+
9551025def test_run_returns_empty_result_for_blank_statement (monkeypatch ) -> None :
9561026 split_inputs : list [str ] = []
9571027
0 commit comments