Skip to content

Commit 408888e

Browse files
committed
YQL-19612 format for value_constructor
commit_hash:d31d086ec6fffa8aff47fc22a3921e2a15cd9008
1 parent ee2d861 commit 408888e

File tree

25 files changed

+209
-146
lines changed

25 files changed

+209
-146
lines changed

yql/essentials/sql/v1/format/sql_format.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,54 @@ friend struct TStaticData;
747747
}
748748
}
749749

750+
void VisitValueConstructor(const TRule_value_constructor& msg) {
751+
switch (msg.Alt_case()) {
752+
case TRule_value_constructor::kAltValueConstructor1: {
753+
auto& ctor = msg.GetAlt_value_constructor1();
754+
Scopes.push_back(EScope::TypeName);
755+
Visit(ctor.GetToken1());
756+
Scopes.pop_back();
757+
AfterInvokeExpr = true;
758+
Visit(ctor.GetToken2());
759+
Visit(ctor.GetRule_expr3());
760+
Visit(ctor.GetToken4());
761+
Visit(ctor.GetRule_expr5());
762+
Visit(ctor.GetToken6());
763+
Visit(ctor.GetRule_expr7());
764+
Visit(ctor.GetToken8());
765+
break;
766+
}
767+
case TRule_value_constructor::kAltValueConstructor2: {
768+
auto& ctor = msg.GetAlt_value_constructor2();
769+
Scopes.push_back(EScope::TypeName);
770+
Visit(ctor.GetToken1());
771+
Scopes.pop_back();
772+
AfterInvokeExpr = true;
773+
Visit(ctor.GetToken2());
774+
Visit(ctor.GetRule_expr3());
775+
Visit(ctor.GetToken4());
776+
Visit(ctor.GetRule_expr5());
777+
Visit(ctor.GetToken6());
778+
break;
779+
}
780+
case TRule_value_constructor::kAltValueConstructor3: {
781+
auto& ctor = msg.GetAlt_value_constructor3();
782+
Scopes.push_back(EScope::TypeName);
783+
Visit(ctor.GetToken1());
784+
Scopes.pop_back();
785+
AfterInvokeExpr = true;
786+
Visit(ctor.GetToken2());
787+
Visit(ctor.GetRule_expr3());
788+
Visit(ctor.GetToken4());
789+
Visit(ctor.GetRule_expr5());
790+
Visit(ctor.GetToken6());
791+
break;
792+
}
793+
case TRule_value_constructor::ALT_NOT_SET:
794+
Y_ABORT("You should change implementation according to grammar changes");
795+
}
796+
}
797+
750798
void VisitDefineActionOrSubqueryBody(const TRule_define_action_or_subquery_body& msg) {
751799
SkipSemicolons(msg.GetBlock1());
752800
if (msg.HasBlock2()) {
@@ -2913,6 +2961,7 @@ TStaticData::TStaticData()
29132961
})
29142962
, PrettyVisitDispatch({
29152963
{TToken::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitToken)},
2964+
{TRule_value_constructor::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitValueConstructor)},
29162965
{TRule_into_values_source::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitIntoValuesSource)},
29172966
{TRule_select_kind::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitSelectKind)},
29182967
{TRule_process_core::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitProcessCore)},

yql/essentials/sql/v1/format/sql_format_ut.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1845,3 +1845,17 @@ Y_UNIT_TEST(AnsiLexer) {
18451845
TSetup setup(/* ansiLexer = */ true);
18461846
setup.Run(cases);
18471847
}
1848+
1849+
Y_UNIT_TEST(ValueConstructor) {
1850+
TCases cases = {
1851+
{"select Enum('a', Enum<'a','b'>)",
1852+
"SELECT\n\tEnum('a', Enum<'a', 'b'>)\n;\n"},
1853+
{"select Variant(true, '0', Variant<bool>)",
1854+
"SELECT\n\tVariant(TRUE, '0', Variant<bool>)\n;\n"},
1855+
{"select Callable(Callable<(Int32)->Int32>,($x)->($x))(0)",
1856+
"SELECT\n\tCallable(Callable<(Int32) -> Int32>, ($x) -> ($x))(0)\n;\n"},
1857+
};
1858+
1859+
TSetup setup(/* ansiLexer = */ true);
1860+
setup.Run(cases);
1861+
}

yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_action-eval_variant_/formatted.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
$vt = ParseType('Variant<One:Int32,Two:String>');
44

55
SELECT
6-
VARIANT (12, CAST(Unicode::ToUpper("o"u) AS String) || 'ne', $vt)
6+
Variant(12, CAST(Unicode::ToUpper("o"u) AS String) || 'ne', $vt)
77
;

yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_action-nested_eval_/formatted.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* syntax version 1 */
22
/* postgres can not */
3-
$make_struct = CALLABLE (
3+
$make_struct = Callable(
44
Callable<(String) -> Struct<lel: Int32>>,
55
($_string) -> {
66
RETURN AsStruct(5 AS lel);
@@ -22,7 +22,7 @@ $kekify_struct = ($struct) -> {
2222
};
2323

2424
$struct = AsStruct(
25-
CALLABLE (
25+
Callable(
2626
Callable<(String) -> Struct<kek: Int32>>,
2727
($string) -> {
2828
RETURN $kekify_struct($make_struct($string));
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* postgres can not */
22
/* syntax version 1 */
33
SELECT
4-
ENUM ('foo', Enum<'foo', 'bar'>) == AsEnum('foo'),
5-
ENUM ('foo', Enum<'foo', 'bar'>) == AsEnum('bar'),
6-
ENUM ('foo', Enum<'foo', 'bar'>) == AsEnum('baz')
4+
Enum('foo', Enum<'foo', 'bar'>) == AsEnum('foo'),
5+
Enum('foo', Enum<'foo', 'bar'>) == AsEnum('bar'),
6+
Enum('foo', Enum<'foo', 'bar'>) == AsEnum('baz')
77
;

yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_expr-callable_/formatted.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ $lambda = ($x) -> {
55
};
66

77
$callables = AsTuple(
8-
CALLABLE (Callable<(Int32) -> String>, $lambda),
9-
CALLABLE (Callable<(Bool) -> String>, $lambda),
8+
Callable(Callable<(Int32) -> String>, $lambda),
9+
Callable(Callable<(Bool) -> String>, $lambda),
1010
);
1111

1212
SELECT

yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_expr-cast_decimal_/formatted.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ $lambda = ($big_dec) -> {
4242
RETURN $big_dec;
4343
};
4444

45-
$func = CALLABLE (Callable<(Decimal (10, 5)) -> Decimal (10, 5)>, $lambda);
45+
$func = Callable(Callable<(Decimal (10, 5)) -> Decimal (10, 5)>, $lambda);
4646
$small_dec = Decimal('3.0', 2, 1);
4747

4848
SELECT

yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_expr-cast_decimal_implicit_fail_1_/formatted.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ $lambda = ($small_dec) -> {
44
RETURN $small_dec;
55
};
66

7-
$func_3_1 = CALLABLE (Callable<(Decimal (3, 1)) -> Decimal (3, 1)>, $lambda);
7+
$func_3_1 = Callable(Callable<(Decimal (3, 1)) -> Decimal (3, 1)>, $lambda);
88
$dec_4_2 = Decimal('11.1', 4, 2);
99

1010
SELECT

yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_expr-cast_decimal_implicit_fail_2_/formatted.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ $lambda = ($small_dec) -> {
44
RETURN $small_dec;
55
};
66

7-
$func_3_1 = CALLABLE (Callable<(Decimal (3, 1)) -> Decimal (3, 1)>, $lambda);
7+
$func_3_1 = Callable(Callable<(Decimal (3, 1)) -> Decimal (3, 1)>, $lambda);
88
$dec_5_1 = Decimal('22.2', 5, 1);
99

1010
SELECT

yql/essentials/tests/sql/sql2yql/canondata/test_sql_format.test_expr-distinct_from_containers_/formatted.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ SELECT
1010
<|a: 1 / 0, b: Nothing(String?), c: 1|> IS NOT DISTINCT FROM <|c: 1u, d: 1u / 0u, e: Nothing(Utf8?)|>, --true
1111
[1, 2, NULL] IS NOT DISTINCT FROM [1, 2, just(1 / 0)], --false
1212
{1: NULL} IS DISTINCT FROM {1u: 2 / 0}, --false
13-
VARIANT (1 / 0, '1', $vt1) IS DISTINCT FROM VARIANT (NULL, '1', $vt2), --false
14-
VARIANT (1 / 0, 'b', $svt1) IS NOT DISTINCT FROM VARIANT (NULL, 'b', $svt2), --true
13+
Variant(1 / 0, '1', $vt1) IS DISTINCT FROM Variant(NULL, '1', $vt2), --false
14+
Variant(1 / 0, 'b', $svt1) IS NOT DISTINCT FROM Variant(NULL, 'b', $svt2), --true
1515
;

0 commit comments

Comments
 (0)