2626 POSTGRES_SECRET ,
2727 POSTGRES_URL ,
2828 postgres_expected_data ,
29+ MYSQL_SECRET ,
30+ MYSQL_URL ,
31+ )
32+ from tests .resources .test_data_source_dir .test_mysql_data import (
33+ MYSQL_TEST_EXTERNAL_ACCESS_INTEGRATION ,
2934)
3035from tests .resources .test_data_source_dir .test_postgres_data import (
3136 POSTGRES_TEST_EXTERNAL_ACCESS_INTEGRATION ,
3540SELECT_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"
3641EMPTY_QUERY = "SELECT * FROM ALL_TYPE_TABLE_JDBC WHERE 1=0"
3742POSTGRES_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"
43+ MYSQL_SELECT_QUERY = "select * from ALL_TYPES_TABLE"
3844TABLE_NAME = "ALL_TYPE_TABLE_JDBC"
3945
4046
@@ -62,6 +68,12 @@ def postgres_jar_path(session):
6268 return stage_name + "/postgresql-42.7.7.jar"
6369
6470
71+ @pytest .fixture (scope = "module" )
72+ def mysql_jar_path (session ):
73+ stage_name = session .get_session_stage ()
74+ return stage_name + "/mysql-connector-j-9.5.0.jar"
75+
76+
6577@pytest .fixture (scope = "module" )
6678def postgres_udtf_configs (session , postgres_jar_path ):
6779 return {
@@ -71,6 +83,15 @@ def postgres_udtf_configs(session, postgres_jar_path):
7183 }
7284
7385
86+ @pytest .fixture (scope = "module" )
87+ def mysql_udtf_configs (session , mysql_jar_path ):
88+ return {
89+ "external_access_integration" : MYSQL_TEST_EXTERNAL_ACCESS_INTEGRATION ,
90+ "secret" : MYSQL_SECRET ,
91+ "imports" : [mysql_jar_path ],
92+ }
93+
94+
7495@pytest .fixture (scope = "module" )
7596def udtf_configs (session , jar_path ):
7697 return {
@@ -89,6 +110,9 @@ def setup(session, resources_path):
89110 session .file .put (
90111 resources_path + "/test_data_source_dir/postgresql-42.7.7.jar" , stage_name
91112 )
113+ session .file .put (
114+ resources_path + "/test_data_source_dir/mysql-connector-j-9.5.0.jar" , stage_name
115+ )
92116 yield
93117
94118
@@ -340,3 +364,20 @@ def test_postgres_session_init_statement(
340364 query_timeout = 1 ,
341365 session_init_statement = session_init_statement ,
342366 ).collect ()
367+
368+
369+ def test_connect_mysql (session , mysql_udtf_configs ):
370+ df = session .read .jdbc (
371+ url = MYSQL_URL ,
372+ udtf_configs = mysql_udtf_configs ,
373+ query = MYSQL_SELECT_QUERY ,
374+ ).order_by ("ID" )
375+ print (df .collect ())
376+
377+
378+ def test_sql_server (session ):
379+ pass
380+
381+
382+ def test_databricks (session ):
383+ pass
0 commit comments