@@ -89,6 +89,84 @@ Y_UNIT_TEST_SUITE(KqpAgg) {
89
89
[["Value3"];[1]]
90
90
])" , FormatResultSetYson (result.GetResultSet (0 )));
91
91
}
92
+
93
+ Y_UNIT_TEST (GroupByLimit) {
94
+ TKikimrRunner kikimr;
95
+ auto db = kikimr.GetTableClient ();
96
+ auto session = db.CreateSession ().GetValueSync ().GetSession ();
97
+
98
+ AssertSuccessResult (session.ExecuteSchemeQuery (R"(
99
+ --!syntax_v1
100
+
101
+ CREATE TABLE `TestTable` (
102
+ a Uint64,
103
+ b Uint64,
104
+ c Uint64,
105
+ d Uint64,
106
+ e Uint64,
107
+ PRIMARY KEY (a, b, c)
108
+ );
109
+ )" ).GetValueSync ());
110
+
111
+ AssertSuccessResult (session.ExecuteDataQuery (R"(
112
+ REPLACE INTO `TestTable` (a, b, c, d, e) VALUES
113
+ (1, 11, 21, 31, 41),
114
+ (2, 12, 22, 32, 42),
115
+ (3, 13, 23, 33, 43);
116
+ )" , TTxControl::BeginTx (TTxSettings::SerializableRW ()).CommitTx ()).GetValueSync ());
117
+
118
+
119
+ { // query with 36 groups with limit 32
120
+ auto result = session.ExecuteDataQuery (R"(
121
+ --!syntax_v1
122
+
123
+ PRAGMA GroupByLimit = '32';
124
+
125
+ SELECT a, b, c, d, SUM(e) Data FROM TestTable
126
+ GROUP BY ROLLUP(a, b, c, d, a * b AS ab, b * c AS bc, c * d AS cd, a + b AS sum)
127
+ ORDER BY a, b, c, d;
128
+ )" , TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
129
+ UNIT_ASSERT_VALUES_EQUAL (result.GetStatus (), EStatus::GENERIC_ERROR);
130
+ }
131
+
132
+ { // query with 36 groups without explicit limit
133
+ auto result = session.ExecuteDataQuery (R"(
134
+ --!syntax_v1
135
+
136
+ SELECT a, b, c, d, SUM(e) Data FROM TestTable
137
+ GROUP BY ROLLUP(a, b, c, d, a * b AS ab, b * c AS bc, c * d AS cd, a + b AS sum)
138
+ ORDER BY a, b, c, d;
139
+ )" , TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
140
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
141
+ CompareYson (R"( [
142
+ [#;#;#;#;[126u]];
143
+ [[1u];#;#;#;[41u]];
144
+ [[1u];[11u];#;#;[41u]];
145
+ [[1u];[11u];[21u];#;[41u]];
146
+ [[1u];[11u];[21u];[31u];[41u]];
147
+ [[1u];[11u];[21u];[31u];[41u]];
148
+ [[1u];[11u];[21u];[31u];[41u]];
149
+ [[1u];[11u];[21u];[31u];[41u]];
150
+ [[1u];[11u];[21u];[31u];[41u]];
151
+ [[2u];#;#;#;[42u]];
152
+ [[2u];[12u];#;#;[42u]];
153
+ [[2u];[12u];[22u];#;[42u]];
154
+ [[2u];[12u];[22u];[32u];[42u]];
155
+ [[2u];[12u];[22u];[32u];[42u]];
156
+ [[2u];[12u];[22u];[32u];[42u]];
157
+ [[2u];[12u];[22u];[32u];[42u]];
158
+ [[2u];[12u];[22u];[32u];[42u]];
159
+ [[3u];#;#;#;[43u]];
160
+ [[3u];[13u];#;#;[43u]];
161
+ [[3u];[13u];[23u];#;[43u]];
162
+ [[3u];[13u];[23u];[33u];[43u]];
163
+ [[3u];[13u];[23u];[33u];[43u]];
164
+ [[3u];[13u];[23u];[33u];[43u]];
165
+ [[3u];[13u];[23u];[33u];[43u]];
166
+ [[3u];[13u];[23u];[33u];[43u]]
167
+ ])" , FormatResultSetYson (result.GetResultSet (0 )));
168
+ }
169
+ }
92
170
}
93
171
94
172
} // namespace NKikimr::NKqp
0 commit comments