@@ -17,6 +17,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
17
17
Y_UNIT_TEST (AutoParamValues_DifferentTypes) {
18
18
TTranslationSettings settings;
19
19
settings.AutoParametrizeEnabled = true ;
20
+ settings.AutoParametrizeValuesStmt = true ;
20
21
auto res = SqlToYqlWithMode (
21
22
R"( insert into plato.Output values (1,2,3), (1,2.0,3))" ,
22
23
NSQLTranslation::ESqlMode::QUERY,
@@ -66,10 +67,11 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
66
67
}
67
68
}
68
69
69
- void TestAutoParam (const TString& query, const THashMap<TString, TString>& expectedParamNameToJsonYdbVal, const TMap<TString, TString>& expectedParamTypes, TUsedParamsGetter usedParamsGetter, THashSet<TString> enabledParametrizeScopes = {}) {
70
+ void TestAutoParam (const TString& query, const THashMap<TString, TString>& expectedParamNameToJsonYdbVal, const TMap<TString, TString>& expectedParamTypes, TUsedParamsGetter usedParamsGetter, THashSet<TString> disabledParametrizeScopes = {}) {
70
71
TTranslationSettings settings;
71
72
settings.AutoParametrizeEnabled = true ;
72
- settings.AutoParametrizeEnabledScopes = enabledParametrizeScopes;
73
+ settings.AutoParametrizeValuesStmt = true ;
74
+ settings.AutoParametrizeExprDisabledScopes = disabledParametrizeScopes;
73
75
auto res = SqlToYqlWithMode (
74
76
query,
75
77
NSQLTranslation::ESqlMode::QUERY,
@@ -190,7 +192,6 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
190
192
{"type":{"pg_type": {"oid": 23}},
191
193
"value":{"text_value": "1"}}
192
194
)" ;
193
- THashSet<TString> enabledScopes {" WHERE" };
194
195
195
196
// We expect: (PgOp '">" (PgColumnRef '"key") a0)
196
197
const TUsedParamsGetter usedInWhereComp = [] (TSet<TString>& usedParams, const NYql::TAstNode& node) {
@@ -220,7 +221,7 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
220
221
usedParams.insert (TString (pgBinOpSecondArg->GetContent ()));
221
222
};
222
223
TString type = " (PgType 'int4)" ;
223
- TestAutoParam (query, {{" a0" , expectedParamJson}}, {{" a0" , type}}, usedInWhereComp, enabledScopes );
224
+ TestAutoParam (query, {{" a0" , expectedParamJson}}, {{" a0" , type}}, usedInWhereComp);
224
225
}
225
226
226
227
Y_UNIT_TEST (AutoParamConsts_Select) {
@@ -239,7 +240,6 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
239
240
{"type":{"pg_type": {"oid": 1560}},
240
241
"value":{"text_value": "b10001"}}
241
242
)" ;
242
- THashSet<TString> enabledScopes {" SELECT" };
243
243
const TUsedParamsGetter dummyGetter = [] (TSet<TString>& usedParams, const NYql::TAstNode&) {
244
244
usedParams = {" a0" , " a1" , " a2" };
245
245
};
@@ -252,7 +252,24 @@ Y_UNIT_TEST_SUITE(PgSqlParsingAutoparam) {
252
252
{" a0" , expectedParamJsonInt4},
253
253
{" a1" , expectedParamJsonText},
254
254
{" a2" , expectedParamJsonBit},
255
- }, expectedParamTypes, dummyGetter, enabledScopes);
255
+ }, expectedParamTypes, dummyGetter);
256
+ }
257
+
258
+ Y_UNIT_TEST (AutoParamValues_FailToInferColumnType) {
259
+ const auto query = R"( INSERT INTO test VALUES (1), ('2');)" ;
260
+ TMap<TString, TString> paramToType = {{" a0" , " (PgType 'int4)" }, {" a1" , " (PgType 'unknown)" }};
261
+ TString expectedParamJsonInt4 = R"(
262
+ {"type":{"pg_type": {"oid": 23}},
263
+ "value":{"text_value": "1"}}
264
+ )" ;
265
+ TString expectedParamJsonText = R"(
266
+ {"type":{"pg_type": {"oid": 705}},
267
+ "value":{"text_value": "2"}}
268
+ )" ;
269
+ const TUsedParamsGetter dummyGetter = [] (TSet<TString>& usedParams, const NYql::TAstNode&) {
270
+ usedParams = {" a0" , " a1" };
271
+ };
272
+ TestAutoParam (query, {{" a0" , expectedParamJsonInt4}, {" a1" , expectedParamJsonText}}, paramToType, dummyGetter, {});
256
273
}
257
274
258
275
}
0 commit comments