Skip to content

Commit 279af75

Browse files
committed
fix
1 parent 80fb4e9 commit 279af75

File tree

2 files changed

+46
-2
lines changed

2 files changed

+46
-2
lines changed

ydb/library/yql/sql/v1/format/sql_format.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,10 @@ friend struct TStaticData;
269269
First = false;
270270
}
271271

272+
if (str == "$" && FuncCall) {
273+
FuncCall = false;
274+
}
275+
272276
if (Scopes.back() == EScope::Identifier && !FuncCall) {
273277
if (str != "$" && !NYql::LookupSimpleTypeBySqlAlias(str, true)) {
274278
SB << "id";
@@ -283,6 +287,25 @@ friend struct TStaticData;
283287
}
284288
}
285289

290+
void VisitPragmaValue(const TRule_pragma_value& msg) {
291+
switch (msg.Alt_case()) {
292+
case TRule_pragma_value::kAltPragmaValue1: {
293+
NextToken = "0";
294+
break;
295+
}
296+
case TRule_pragma_value::kAltPragmaValue3: {
297+
NextToken = "'str'";
298+
break;
299+
}
300+
case TRule_pragma_value::kAltPragmaValue4: {
301+
NextToken = "false";
302+
break;
303+
}
304+
default:;
305+
}
306+
VisitAllFields(TRule_pragma_value::GetDescriptor(), msg);
307+
}
308+
286309
void VisitLiteralValue(const TRule_literal_value& msg) {
287310
switch (msg.Alt_case()) {
288311
case TRule_literal_value::kAltLiteralValue1: {
@@ -2600,6 +2623,7 @@ TStaticData::TStaticData()
26002623
, ObfuscatingVisitDispatch({
26012624
{TToken::GetDescriptor(), MakeObfuscatingFunctor(&TObfuscatingVisitor::VisitToken)},
26022625
{TRule_literal_value::GetDescriptor(), MakeObfuscatingFunctor(&TObfuscatingVisitor::VisitLiteralValue)},
2626+
{TRule_pragma_value::GetDescriptor(), MakeObfuscatingFunctor(&TObfuscatingVisitor::VisitPragmaValue)},
26032627
{TRule_atom_expr::GetDescriptor(), MakeObfuscatingFunctor(&TObfuscatingVisitor::VisitAtomExpr)},
26042628
{TRule_in_atom_expr::GetDescriptor(), MakeObfuscatingFunctor(&TObfuscatingVisitor::VisitInAtomExpr)},
26052629
{TRule_unary_casual_subexpr::GetDescriptor(), MakeObfuscatingFunctor(&TObfuscatingVisitor::VisitUnaryCasualSubexpr)},

ydb/library/yql/sql/v1/format/sql_format_ut.cpp

+22-2
Original file line numberDiff line numberDiff line change
@@ -1471,7 +1471,7 @@ FROM Input MATCH_RECOGNIZE (PATTERN (A) DEFINE A AS A);
14711471
setup.Run(cases);
14721472
}
14731473

1474-
Y_UNIT_TEST(Obfuscate) {
1474+
Y_UNIT_TEST(ObfuscateSelect) {
14751475
TCases cases = {
14761476
{"select 1;",
14771477
"SELECT\n\t0;\n"},
@@ -1495,11 +1495,31 @@ FROM Input MATCH_RECOGNIZE (PATTERN (A) DEFINE A AS A);
14951495
"DECLARE $id AS int32;\n"},
14961496
{"select * from `logs/of/bob` where pwd='foo';",
14971497
"SELECT\n\t*\nFROM id\nWHERE id = 'str';\n"},
1498+
{"select $f();",
1499+
"SELECT\n\t$id();\n"},
14981500
};
14991501

15001502
TSetup setup;
15011503
setup.Run(cases, NSQLFormat::EFormatMode::Obfuscate);
1502-
}
1504+
}
1505+
1506+
Y_UNIT_TEST(ObfuscatePragma) {
1507+
TCases cases = {
1508+
{"pragma a=1",
1509+
"PRAGMA id = 0;\n"},
1510+
{"pragma a='foo';",
1511+
"PRAGMA id = 'str';\n"},
1512+
{"pragma a=true;",
1513+
"PRAGMA id = FALSE;\n"},
1514+
{"pragma a=$foo;",
1515+
"PRAGMA id = $id;\n"},
1516+
{"pragma a=foo;",
1517+
"PRAGMA id = id;\n"},
1518+
};
1519+
1520+
TSetup setup;
1521+
setup.Run(cases, NSQLFormat::EFormatMode::Obfuscate);
1522+
}
15031523

15041524
Y_UNIT_TEST(CreateView) {
15051525
TCases cases = {

0 commit comments

Comments
 (0)