2626 POSTGRES_SECRET ,
2727 POSTGRES_URL ,
2828 postgres_expected_data ,
29+ MYSQL_SECRET ,
30+ MYSQL_URL ,
31+ mysql_expected_data ,
32+ SQL_SERVER_SECRET ,
33+ SQL_SERVER_URL ,
34+ sql_sever_expected_data ,
35+ )
36+ from tests .resources .test_data_source_dir .test_mysql_data import (
37+ MYSQL_TEST_EXTERNAL_ACCESS_INTEGRATION ,
2938)
3039from tests .resources .test_data_source_dir .test_postgres_data import (
3140 POSTGRES_TEST_EXTERNAL_ACCESS_INTEGRATION ,
3241)
42+ from tests .resources .test_data_source_dir .test_sql_server_data import (
43+ SQL_SERVER_TEST_EXTERNAL_ACCESS_INTEGRATION ,
44+ )
3345from tests .utils import RUNNING_ON_JENKINS
3446
3547SELECT_QUERY = "SELECT ID, NUMBER_COL, BINARY_FLOAT_COL, BINARY_DOUBLE_COL, VARCHAR2_COL, CHAR_COL, CLOB_COL, NCHAR_COL, NVARCHAR2_COL, NCLOB_COL, DATE_COL, TIMESTAMP_COL, TIMESTAMP_TZ_COL, TIMESTAMP_LTZ_COL, RAW_COL, GUID_COL FROM ALL_TYPE_TABLE_JDBC"
3648EMPTY_QUERY = "SELECT * FROM ALL_TYPE_TABLE_JDBC WHERE 1=0"
3749POSTGRES_SELECT_QUERY = "select BIGINT_COL, BIGSERIAL_COL, BIT_COL, BIT_VARYING_COL, BOOLEAN_COL, BOX_COL, BYTEA_COL, CHAR_COL, VARCHAR_COL, CIDR_COL, CIRCLE_COL, DATE_COL, DOUBLE_PRECISION_COL, INET_COL, INTEGER_COL, INTERVAL_COL, JSON_COL, JSONB_COL, LINE_COL, LSEG_COL, MACADDR_COL, MACADDR8_COL, NUMERIC_COL, PATH_COL, PG_LSN_COL, PG_SNAPSHOT_COL, POINT_COL, POLYGON_COL, REAL_COL, SMALLINT_COL, SMALLSERIAL_COL, SERIAL_COL, TEXT_COL, TIME_COL, TIMESTAMP_COL, TIMESTAMPTZ_COL, TSQUERY_COL, TSVECTOR_COL, TXID_SNAPSHOT_COL, UUID_COL, XML_COL from test_schema.ALL_TYPE_TABLE"
50+ MYSQL_SELECT_QUERY = "select * from ALL_TYPES_TABLE"
51+ SQL_SERVER_QUERY = "SELECT ID, BIGINT_COL, INT_COL, SMALLINT_COL, TINYINT_COL, BIT_COL, DECIMAL_COL, NUMERIC_COL, MONEY_COL, SMALLMONEY_COL, FLOAT_COL, REAL_COL, DATE_COL, TIME_COL, DATETIME_COL, DATETIME2_COL, SMALLDATETIME_COL, CHAR_COL, VARCHAR_COL, VARCHAR_MAX_COL, TEXT_COL, NCHAR_COL, NVARCHAR_COL, NVARCHAR_MAX_COL, NTEXT_COL, BINARY_COL, VARBINARY_COL, VARBINARY_MAX_COL, IMAGE_COL, UNIQUEIDENTIFIER_COL, TIMESTAMP_COL FROM test_db.dbo.ALL_TYPE_TABLE"
3852TABLE_NAME = "ALL_TYPE_TABLE_JDBC"
3953
4054
@@ -62,6 +76,18 @@ def postgres_jar_path(session):
6276 return stage_name + "/postgresql-42.7.7.jar"
6377
6478
79+ @pytest .fixture (scope = "module" )
80+ def mysql_jar_path (session ):
81+ stage_name = session .get_session_stage ()
82+ return stage_name + "/mysql-connector-j-9.5.0.jar"
83+
84+
85+ @pytest .fixture (scope = "module" )
86+ def sql_server_jar_path (session ):
87+ stage_name = session .get_session_stage ()
88+ return stage_name + "/mssql-jdbc-13.2.1.jre11.jar"
89+
90+
6591@pytest .fixture (scope = "module" )
6692def postgres_udtf_configs (session , postgres_jar_path ):
6793 return {
@@ -71,6 +97,27 @@ def postgres_udtf_configs(session, postgres_jar_path):
7197 }
7298
7399
100+ @pytest .fixture (scope = "module" )
101+ def mysql_udtf_configs (session , mysql_jar_path ):
102+ return {
103+ "external_access_integration" : MYSQL_TEST_EXTERNAL_ACCESS_INTEGRATION ,
104+ "secret" : MYSQL_SECRET ,
105+ "imports" : [mysql_jar_path ],
106+ }
107+
108+
109+ @pytest .fixture (scope = "module" )
110+ def sql_server_udtf_configs (session , sql_server_jar_path ):
111+ return {
112+ "external_access_integration" : SQL_SERVER_TEST_EXTERNAL_ACCESS_INTEGRATION [
113+ "external_access_integration"
114+ ],
115+ "secret" : SQL_SERVER_SECRET ,
116+ "imports" : [sql_server_jar_path ],
117+ "java_version" : 11 ,
118+ }
119+
120+
74121@pytest .fixture (scope = "module" )
75122def udtf_configs (session , jar_path ):
76123 return {
@@ -89,6 +136,12 @@ def setup(session, resources_path):
89136 session .file .put (
90137 resources_path + "/test_data_source_dir/postgresql-42.7.7.jar" , stage_name
91138 )
139+ session .file .put (
140+ resources_path + "/test_data_source_dir/mysql-connector-j-9.5.0.jar" , stage_name
141+ )
142+ session .file .put (
143+ resources_path + "/test_data_source_dir/mssql-jdbc-13.2.1.jre11.jar" , stage_name
144+ )
92145 yield
93146
94147
@@ -340,3 +393,21 @@ def test_postgres_session_init_statement(
340393 query_timeout = 1 ,
341394 session_init_statement = session_init_statement ,
342395 ).collect ()
396+
397+
398+ def test_connect_mysql (session , mysql_udtf_configs ):
399+ df = session .read .jdbc (
400+ url = MYSQL_URL ,
401+ udtf_configs = mysql_udtf_configs ,
402+ query = MYSQL_SELECT_QUERY ,
403+ ).order_by ("ID" )
404+ assert df .collect () == mysql_expected_data
405+
406+
407+ def test_connect_sql_server (session , sql_server_udtf_configs ):
408+ df = session .read .jdbc (
409+ url = SQL_SERVER_URL ,
410+ udtf_configs = sql_server_udtf_configs ,
411+ query = SQL_SERVER_QUERY ,
412+ ).order_by ("ID" )
413+ assert df .collect () == sql_sever_expected_data
0 commit comments