33from unittest .mock import call
44
55import pytest
6- from sqlglot import parse_one
6+ from sqlglot import parse_one , exp
77from sqlmesh .core .engine_adapter .risingwave import RisingwaveEngineAdapter
88
99pytestmark = [pytest .mark .engine , pytest .mark .risingwave ]
@@ -14,6 +14,47 @@ def adapter(make_mocked_engine_adapter):
1414 adapter = make_mocked_engine_adapter (RisingwaveEngineAdapter )
1515 return adapter
1616
17+ def test_columns (adapter : t .Callable ):
18+ adapter .cursor .fetchall .return_value = [
19+ ("smallint_col" ,"smallint" ),
20+ ("int_col" ,"integer" ),
21+ ("bigint_col" ,"bigint" ),
22+ ("ts_col" ,"timestamp without time zone" ),
23+ ("tstz_col" ,"timestamp with time zone" ),
24+ ("int_array_col" ,"integer[]" ),
25+ ("vchar_col" ,"character varying" ),
26+ ("struct_col" ,"struct<nested_col integer>" )
27+ ]
28+ resp = adapter .columns ("db.table" )
29+ assert resp == {
30+ "smallint_col" : exp .DataType .build (exp .DataType .Type .SMALLINT ,nested = False ),
31+ "int_col" : exp .DataType .build (exp .DataType .Type .INT ,nested = False ),
32+ "bigint_col" : exp .DataType .build (exp .DataType .Type .BIGINT ,nested = False ),
33+ "ts_col" : exp .DataType .build (exp .DataType .Type .TIMESTAMP ,nested = False ),
34+ "tstz_col" : exp .DataType .build (exp .DataType .Type .TIMESTAMPTZ ,nested = False ),
35+ "int_array_col" : exp .DataType .build (
36+ exp .DataType .Type .ARRAY ,
37+ expressions = [exp .DataType .build (exp .DataType .Type .INT ,nested = False )],
38+ nested = True
39+ ),
40+ "vchar_col" : exp .DataType .build (exp .DataType .Type .VARCHAR ),
41+ "struct_col" : exp .DataType .build (
42+ exp .DataType .Type .STRUCT ,
43+ expressions = [
44+ exp .ColumnDef (
45+ this = exp .Identifier (
46+ this = "nested_col" ,
47+ quoted = False
48+ ),
49+ kind = exp .DataType .build (
50+ exp .DataType .Type .INT ,
51+ nested = False
52+ )
53+ )
54+ ],
55+ nested = True
56+ ),
57+ }
1758
1859def test_create_view (adapter : t .Callable ):
1960 adapter .create_view ("db.view" , parse_one ("SELECT 1" ), replace = True )
0 commit comments