11
11
import sqlalchemy as sa
12
12
13
13
import ibis
14
- from ibis .backends .conftest import TEST_TABLES
14
+ from ibis .backends .conftest import TEST_TABLES , init_database
15
15
from ibis .backends .tests .base import BackendTest , RoundAwayFromZero
16
16
17
17
if TYPE_CHECKING :
18
18
from ibis .backends .base import BaseBackend
19
19
20
20
21
21
def copy_into (con , data_dir : Path , table : str ) -> None :
22
- stage = "ibis_testing_stage "
22
+ stage = "ibis_testing "
23
23
csv = f"{ table } .csv"
24
- src = data_dir / csv
25
- con .execute (sa .text (f"PUT file://{ src .absolute ()} @{ stage } /{ csv } " ))
26
- con .execute (
27
- sa .text (
28
- f"COPY INTO { table } FROM @{ stage } /{ csv } FILE_FORMAT = (FORMAT_NAME = ibis_csv_fmt)"
29
- )
24
+ con .exec_driver_sql (
25
+ f"PUT file://{ data_dir .joinpath (csv ).absolute ()} @{ stage } /{ csv } "
26
+ )
27
+ con .exec_driver_sql (
28
+ f"COPY INTO { table } FROM @{ stage } /{ csv } FILE_FORMAT = (FORMAT_NAME = ibis_testing)"
30
29
)
31
30
32
31
@@ -36,10 +35,7 @@ def __init__(self, data_directory: Path) -> None:
36
35
37
36
@staticmethod
38
37
def _load_data (
39
- data_dir ,
40
- script_dir ,
41
- database : str = "ibis_testing" ,
42
- ** _ : Any ,
38
+ data_dir , script_dir , database : str = "ibis_testing" , ** _ : Any
43
39
) -> None :
44
40
"""Load test data into a Snowflake backend instance.
45
41
@@ -53,26 +49,24 @@ def _load_data(
53
49
54
50
pytest .importorskip ("snowflake.connector" )
55
51
pytest .importorskip ("snowflake.sqlalchemy" )
56
- schema = (script_dir / 'schema' / 'snowflake.sql' ).read_text ()
57
-
58
- con = TestConf .connect (data_dir )
59
52
60
- with con .begin () as con :
61
- con .execute (sa .text ("USE WAREHOUSE ibis_testing" ))
62
- con .execute (sa .text (f"DROP DATABASE IF EXISTS { database } " ))
63
- con .execute (sa .text (f"CREATE DATABASE IF NOT EXISTS { database } " ))
64
- con .execute (sa .text (f"CREATE SCHEMA IF NOT EXISTS { database } .ibis_testing" ))
65
- con .execute (sa .text (f"USE SCHEMA { database } .ibis_testing" ))
53
+ if (snowflake_url := os .environ .get ("SNOWFLAKE_URL" )) is None :
54
+ pytest .skip ("SNOWFLAKE_URL environment variable is not defined" )
66
55
67
- for stmt in filter (None , map (str .strip , schema .split (';' ))):
68
- con .execute (sa .text (stmt ))
56
+ with script_dir .joinpath ('schema' , 'snowflake.sql' ).open () as schema :
57
+ con = init_database (
58
+ url = sa .engine .make_url (snowflake_url ).set (database = "" ),
59
+ database = database ,
60
+ schema = schema ,
61
+ )
69
62
63
+ with con .begin () as c :
70
64
# not much we can do to make this faster, but running these in
71
65
# multiple threads seems to save about 2x
72
66
with concurrent .futures .ThreadPoolExecutor () as exe :
73
67
for result in concurrent .futures .as_completed (
74
68
map (
75
- partial (exe .submit , partial (copy_into , con , data_dir )),
69
+ partial (exe .submit , partial (copy_into , c , data_dir )),
76
70
TEST_TABLES ,
77
71
)
78
72
):
0 commit comments