@@ -63,8 +63,28 @@ def test_classify_stmt(self):
63
63
("commit" , StatementType .CLIENT_SIDE ),
64
64
("begin" , StatementType .CLIENT_SIDE ),
65
65
("start" , StatementType .CLIENT_SIDE ),
66
+ ("begin isolation level serializable" , StatementType .CLIENT_SIDE ),
67
+ ("start isolation level serializable" , StatementType .CLIENT_SIDE ),
68
+ ("begin isolation level repeatable read" , StatementType .CLIENT_SIDE ),
69
+ ("start isolation level repeatable read" , StatementType .CLIENT_SIDE ),
66
70
("begin transaction" , StatementType .CLIENT_SIDE ),
67
71
("start transaction" , StatementType .CLIENT_SIDE ),
72
+ (
73
+ "begin transaction isolation level serializable" ,
74
+ StatementType .CLIENT_SIDE ,
75
+ ),
76
+ (
77
+ "start transaction isolation level serializable" ,
78
+ StatementType .CLIENT_SIDE ,
79
+ ),
80
+ (
81
+ "begin transaction isolation level repeatable read" ,
82
+ StatementType .CLIENT_SIDE ,
83
+ ),
84
+ (
85
+ "start transaction isolation level repeatable read" ,
86
+ StatementType .CLIENT_SIDE ,
87
+ ),
68
88
("rollback" , StatementType .CLIENT_SIDE ),
69
89
(" commit TRANSACTION " , StatementType .CLIENT_SIDE ),
70
90
(" rollback TRANSACTION " , StatementType .CLIENT_SIDE ),
@@ -84,6 +104,16 @@ def test_classify_stmt(self):
84
104
("udpate table set col2=1 where col1 = 2" , StatementType .UNKNOWN ),
85
105
("begin foo" , StatementType .UNKNOWN ),
86
106
("begin transaction foo" , StatementType .UNKNOWN ),
107
+ ("begin transaction isolation level" , StatementType .UNKNOWN ),
108
+ ("begin transaction repeatable read" , StatementType .UNKNOWN ),
109
+ (
110
+ "begin transaction isolation level repeatable read foo" ,
111
+ StatementType .UNKNOWN ,
112
+ ),
113
+ (
114
+ "begin transaction isolation level unspecified" ,
115
+ StatementType .UNKNOWN ,
116
+ ),
87
117
("commit foo" , StatementType .UNKNOWN ),
88
118
("commit transaction foo" , StatementType .UNKNOWN ),
89
119
("rollback foo" , StatementType .UNKNOWN ),
@@ -100,6 +130,50 @@ def test_classify_stmt(self):
100
130
classify_statement (query ).statement_type , want_class , query
101
131
)
102
132
133
+ def test_begin_isolation_level (self ):
134
+ parsed_statement = classify_statement ("begin" )
135
+ self .assertEqual (
136
+ parsed_statement ,
137
+ ParsedStatement (
138
+ StatementType .CLIENT_SIDE ,
139
+ Statement ("begin" ),
140
+ ClientSideStatementType .BEGIN ,
141
+ [],
142
+ ),
143
+ )
144
+ parsed_statement = classify_statement ("begin isolation level serializable" )
145
+ self .assertEqual (
146
+ parsed_statement ,
147
+ ParsedStatement (
148
+ StatementType .CLIENT_SIDE ,
149
+ Statement ("begin isolation level serializable" ),
150
+ ClientSideStatementType .BEGIN ,
151
+ ["serializable" ],
152
+ ),
153
+ )
154
+ parsed_statement = classify_statement ("begin isolation level repeatable read" )
155
+ self .assertEqual (
156
+ parsed_statement ,
157
+ ParsedStatement (
158
+ StatementType .CLIENT_SIDE ,
159
+ Statement ("begin isolation level repeatable read" ),
160
+ ClientSideStatementType .BEGIN ,
161
+ ["repeatable read" ],
162
+ ),
163
+ )
164
+ parsed_statement = classify_statement (
165
+ "begin isolation level repeatable read "
166
+ )
167
+ self .assertEqual (
168
+ parsed_statement ,
169
+ ParsedStatement (
170
+ StatementType .CLIENT_SIDE ,
171
+ Statement ("begin isolation level repeatable read" ),
172
+ ClientSideStatementType .BEGIN ,
173
+ ["repeatable read" ],
174
+ ),
175
+ )
176
+
103
177
def test_partition_query_classify_stmt (self ):
104
178
parsed_statement = classify_statement (
105
179
" PARTITION SELECT s.SongName FROM Songs AS s "
0 commit comments