@@ -13,14 +13,13 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
13
13
UNIT_ASSERT_C (res.Issues .Empty (), " Failed to parse statement, issues: " + res.Issues .ToString ());
14
14
UNIT_ASSERT_C (res.PgAutoParamValues .Empty (), " Expected no auto parametrization" );
15
15
}
16
-
17
- Y_UNIT_TEST (AutoParamValues_DifferentTypes ) {
16
+
17
+ Y_UNIT_TEST (AutoParamValues_NoParametersWithDefaults ) {
18
18
TTranslationSettings settings;
19
19
settings.AutoParametrizeEnabled = true ;
20
20
settings.AutoParametrizeValuesStmt = true ;
21
- settings.AutoParametrizeExprDisabledScopes = {" VALUES" };
22
21
auto res = SqlToYqlWithMode (
23
- R"( insert into plato.Output values (1,2,3), (1,2.0,3 ))" ,
22
+ R"( CREATE TABLE t (a int PRIMARY KEY, b int DEFAULT 0 ))" ,
24
23
NSQLTranslation::ESqlMode::QUERY,
25
24
10 ,
26
25
{},
@@ -33,10 +32,10 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
33
32
}
34
33
35
34
using TUsedParamsGetter = std::function<void (TSet<TString>&, const NYql::TAstNode& node)>;
36
-
35
+
37
36
void GetUsedParamsInValues (TSet<TString>& usedParams, const NYql::TAstNode& node) {
38
- const bool isPgSetItem =
39
- node.IsListOfSize (2 ) && node.GetChild (0 )->IsAtom ()
37
+ const bool isPgSetItem =
38
+ node.IsListOfSize (2 ) && node.GetChild (0 )->IsAtom ()
40
39
&& node.GetChild (0 )->GetContent () == " PgSetItem" ;
41
40
if (!isPgSetItem) {
42
41
return ;
@@ -45,7 +44,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
45
44
46
45
for (const auto * pgOption : pgSetItemOptions->GetChildren ()) {
47
46
const bool isQuotedList =
48
- pgOption->IsListOfSize (2 ) && pgOption->GetChild (0 )->IsAtom ()
47
+ pgOption->IsListOfSize (2 ) && pgOption->GetChild (0 )->IsAtom ()
49
48
&& pgOption->GetChild (0 )->GetContent () == " quote" ;
50
49
if (!isQuotedList) {
51
50
continue ;
@@ -54,7 +53,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
54
53
const auto * option = pgOption->GetChild (1 );
55
54
const auto * optionName = option->GetChild (0 );
56
55
57
- const bool isValuesNode =
56
+ const bool isValuesNode =
58
57
optionName->IsListOfSize (2 ) && optionName->GetChild (0 )->IsAtom ()
59
58
&& optionName->GetChild (0 )->GetContent () == " quote"
60
59
&& optionName->GetChild (1 )->GetContent () == " values" ;
@@ -68,11 +67,10 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
68
67
}
69
68
}
70
69
71
- void TestAutoParam (const TString& query, const THashMap<TString, TString>& expectedParamNameToJsonYdbVal, const TMap<TString, TString>& expectedParamTypes, TUsedParamsGetter usedParamsGetter, THashSet<TString> disabledParametrizeScopes = {} ) {
70
+ void TestAutoParam (const TString& query, const THashMap<TString, TString>& expectedParamNameToJsonYdbVal, const TMap<TString, TString>& expectedParamTypes, TUsedParamsGetter usedParamsGetter) {
72
71
TTranslationSettings settings;
73
72
settings.AutoParametrizeEnabled = true ;
74
73
settings.AutoParametrizeValuesStmt = true ;
75
- settings.AutoParametrizeExprDisabledScopes = disabledParametrizeScopes;
76
74
auto res = SqlToYqlWithMode (
77
75
query,
78
76
NSQLTranslation::ESqlMode::QUERY,
@@ -87,9 +85,9 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
87
85
TSet<TString> declaredParams;
88
86
TMap<TString, TString> actualParamTypes;
89
87
VisitAstNodes (*res.Root , [&declaredParams, &actualParamTypes] (const NYql::TAstNode& node) {
90
- const bool isDeclareNode =
91
- node.IsList () && node.GetChildrenCount () > 0
92
- && node.GetChild (0 )->IsAtom ()
88
+ const bool isDeclareNode =
89
+ node.IsList () && node.GetChildrenCount () > 0
90
+ && node.GetChild (0 )->IsAtom ()
93
91
&& node.GetChild (0 )->GetContent () == " declare" ;
94
92
if (isDeclareNode) {
95
93
UNIT_ASSERT_VALUES_EQUAL (node.GetChildrenCount (), 3 );
@@ -114,7 +112,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
114
112
115
113
auto actualParam = res.PgAutoParamValues .GetRef ()[expectedParamName];
116
114
UNIT_ASSERT_STRINGS_EQUAL (expectedParam.ShortUtf8DebugString (), actualParam.ShortUtf8DebugString ());
117
- UNIT_ASSERT_C (declaredParams.contains (expectedParamName),
115
+ UNIT_ASSERT_C (declaredParams.contains (expectedParamName),
118
116
" Declared params don't contain expected param name: " << expectedParamName);
119
117
}
120
118
@@ -184,7 +182,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
184
182
TString type = " (ListType (TupleType (PgType 'unknown) (PgType 'int4)))" ;
185
183
TestAutoParam (query, {{" a0" , expectedParamJson}}, {{" a0" , type}}, GetUsedParamsInValues);
186
184
}
187
-
185
+
188
186
Y_UNIT_TEST (AutoParamConsts_Where) {
189
187
TString query = R"(
190
188
select * from plato.Output where key > 1
@@ -201,8 +199,8 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
201
199
return ;
202
200
}
203
201
const auto quotedVal = maybeQuote.GetRef ();
204
- const bool isWhere =
205
- quotedVal->IsListOfSize (2 ) && quotedVal->GetChild (1 )->IsListOfSize (3 )
202
+ const bool isWhere =
203
+ quotedVal->IsListOfSize (2 ) && quotedVal->GetChild (1 )->IsListOfSize (3 )
206
204
&& quotedVal->GetChild (1 )->IsListOfSize (3 )
207
205
&& quotedVal->GetChild (1 )->GetChild (0 )->IsAtom ()
208
206
&& quotedVal->GetChild (1 )->GetChild (0 )->GetContent () == " PgWhere" ;
@@ -224,7 +222,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
224
222
TString type = " (PgType 'int4)" ;
225
223
TestAutoParam (query, {{" a0" , expectedParamJson}}, {{" a0" , type}}, usedInWhereComp);
226
224
}
227
-
225
+
228
226
Y_UNIT_TEST (AutoParamConsts_Select) {
229
227
TString query = R"(
230
228
select 1, 'test', B'10001'
@@ -250,7 +248,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
250
248
{" a2" , " (PgType 'bit)" },
251
249
};
252
250
TestAutoParam (query, {
253
- {" a0" , expectedParamJsonInt4},
251
+ {" a0" , expectedParamJsonInt4},
254
252
{" a1" , expectedParamJsonText},
255
253
{" a2" , expectedParamJsonBit},
256
254
}, expectedParamTypes, dummyGetter);
@@ -270,7 +268,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
270
268
const TUsedParamsGetter dummyGetter = [] (TSet<TString>& usedParams, const NYql::TAstNode&) {
271
269
usedParams = {" a0" , " a1" };
272
270
};
273
- TestAutoParam (query, {{" a0" , expectedParamJsonInt4}, {" a1" , expectedParamJsonText}}, paramToType, dummyGetter, {} );
271
+ TestAutoParam (query, {{" a0" , expectedParamJsonInt4}, {" a1" , expectedParamJsonText}}, paramToType, dummyGetter);
274
272
}
275
273
276
274
}
0 commit comments