Skip to content

Commit 5a3071f

Browse files
Merge f5de190 into c808caf
2 parents c808caf + f5de190 commit 5a3071f

File tree

3 files changed

+67
-53
lines changed

3 files changed

+67
-53
lines changed

ydb/core/kqp/opt/physical/kqp_opt_phy_build_stage.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,6 +744,10 @@ NYql::NNodes::TExprBase KqpBuildStreamIdxLookupJoinStages(NYql::NNodes::TExprBas
744744

745745
const auto& idxLookupJoin = node.Cast<TKqlIndexLookupJoin>();
746746

747+
if (!idxLookupJoin.Input().Maybe<TDqCnUnionAll>()) {
748+
return node;
749+
}
750+
747751
return Build<TDqCnUnionAll>(ctx, node.Pos())
748752
.Output()
749753
.Stage<TDqStage>()

ydb/core/kqp/ut/join/kqp_join_order_ut.cpp

Lines changed: 55 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,7 @@ create table `/Root/test/ds/store_sales`
724724

725725
}
726726

727-
static TKikimrRunner GetKikimrWithJoinSettings(){
727+
static TKikimrRunner GetKikimrWithJoinSettings(bool useStreamLookupJoin = false){
728728
TVector<NKikimrKqp::TKqpSetting> settings;
729729

730730
NKikimrKqp::TKqpSetting setting;
@@ -741,7 +741,10 @@ static TKikimrRunner GetKikimrWithJoinSettings(){
741741
//setting.SetValue("grace");
742742
//settings.push_back(setting);
743743

744-
return TKikimrRunner(settings);
744+
NKikimrConfig::TAppConfig appConfig;
745+
appConfig.MutableTableServiceConfig()->SetEnableKqpDataQueryStreamIdxLookupJoin(useStreamLookupJoin);
746+
auto serverSettings = TKikimrSettings().SetAppConfig(appConfig);
747+
return TKikimrRunner(serverSettings);
745748
}
746749

747750
class TChainConstructor {
@@ -811,9 +814,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
811814
chain.JoinTables();
812815
}
813816

814-
Y_UNIT_TEST(FiveWayJoin) {
817+
Y_UNIT_TEST_TWIN(FiveWayJoin, StreamLookupJoin) {
815818

816-
auto kikimr = GetKikimrWithJoinSettings();
819+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
817820
auto db = kikimr.GetTableClient();
818821
auto session = db.CreateSession().GetValueSync().GetSession();
819822

@@ -848,9 +851,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
848851
}
849852
}
850853

851-
Y_UNIT_TEST(FourWayJoinLeftFirst) {
854+
Y_UNIT_TEST_TWIN(FourWayJoinLeftFirst, StreamLookupJoin) {
852855

853-
auto kikimr = GetKikimrWithJoinSettings();
856+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
854857
auto db = kikimr.GetTableClient();
855858
auto session = db.CreateSession().GetValueSync().GetSession();
856859

@@ -885,9 +888,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
885888
}
886889
}
887890

888-
Y_UNIT_TEST(FiveWayJoinWithPreds) {
891+
Y_UNIT_TEST_TWIN(FiveWayJoinWithPreds, StreamLookupJoin) {
889892

890-
auto kikimr = GetKikimrWithJoinSettings();
893+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
891894
auto db = kikimr.GetTableClient();
892895
auto session = db.CreateSession().GetValueSync().GetSession();
893896

@@ -923,9 +926,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
923926
}
924927
}
925928

926-
Y_UNIT_TEST(FiveWayJoinWithComplexPreds) {
929+
Y_UNIT_TEST_TWIN(FiveWayJoinWithComplexPreds, StreamLookupJoin) {
927930

928-
auto kikimr = GetKikimrWithJoinSettings();
931+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
929932
auto db = kikimr.GetTableClient();
930933
auto session = db.CreateSession().GetValueSync().GetSession();
931934

@@ -961,9 +964,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
961964
}
962965
}
963966

964-
Y_UNIT_TEST(FiveWayJoinWithComplexPreds2) {
967+
Y_UNIT_TEST_TWIN(FiveWayJoinWithComplexPreds2, StreamLookupJoin) {
965968

966-
auto kikimr = GetKikimrWithJoinSettings();
969+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
967970
auto db = kikimr.GetTableClient();
968971
auto session = db.CreateSession().GetValueSync().GetSession();
969972

@@ -999,9 +1002,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
9991002
}
10001003
}
10011004

1002-
Y_UNIT_TEST(FiveWayJoinWithPredsAndEquiv) {
1005+
Y_UNIT_TEST_TWIN(FiveWayJoinWithPredsAndEquiv, StreamLookupJoin) {
10031006

1004-
auto kikimr = GetKikimrWithJoinSettings();
1007+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
10051008
auto db = kikimr.GetTableClient();
10061009
auto session = db.CreateSession().GetValueSync().GetSession();
10071010

@@ -1037,9 +1040,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
10371040
}
10381041
}
10391042

1040-
Y_UNIT_TEST(FourWayJoinWithPredsAndEquivAndLeft) {
1043+
Y_UNIT_TEST_TWIN(FourWayJoinWithPredsAndEquivAndLeft, StreamLookupJoin) {
10411044

1042-
auto kikimr = GetKikimrWithJoinSettings();
1045+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
10431046
auto db = kikimr.GetTableClient();
10441047
auto session = db.CreateSession().GetValueSync().GetSession();
10451048

@@ -1075,9 +1078,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
10751078
}
10761079
}
10771080

1078-
Y_UNIT_TEST(FiveWayJoinWithConstantFold) {
1081+
Y_UNIT_TEST_TWIN(FiveWayJoinWithConstantFold, StreamLookupJoin) {
10791082

1080-
auto kikimr = GetKikimrWithJoinSettings();
1083+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
10811084
auto db = kikimr.GetTableClient();
10821085
auto session = db.CreateSession().GetValueSync().GetSession();
10831086

@@ -1113,9 +1116,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
11131116
}
11141117
}
11151118

1116-
Y_UNIT_TEST(FiveWayJoinWithConstantFoldOpt) {
1119+
Y_UNIT_TEST_TWIN(FiveWayJoinWithConstantFoldOpt, StreamLookupJoin) {
11171120

1118-
auto kikimr = GetKikimrWithJoinSettings();
1121+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
11191122
auto db = kikimr.GetTableClient();
11201123
auto session = db.CreateSession().GetValueSync().GetSession();
11211124

@@ -1151,9 +1154,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
11511154
}
11521155
}
11531156

1154-
Y_UNIT_TEST(DatetimeConstantFold) {
1157+
Y_UNIT_TEST_TWIN(DatetimeConstantFold, StreamLookupJoin) {
11551158

1156-
auto kikimr = GetKikimrWithJoinSettings();
1159+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
11571160
auto db = kikimr.GetTableClient();
11581161
auto session = db.CreateSession().GetValueSync().GetSession();
11591162

@@ -1177,9 +1180,9 @@ Y_UNIT_TEST_SUITE(KqpJoinOrder) {
11771180
}
11781181
}
11791182

1180-
Y_UNIT_TEST(TPCH2) {
1183+
Y_UNIT_TEST_TWIN(TPCH2, StreamLookupJoin) {
11811184

1182-
auto kikimr = GetKikimrWithJoinSettings();
1185+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
11831186
auto db = kikimr.GetTableClient();
11841187
auto session = db.CreateSession().GetValueSync().GetSession();
11851188

@@ -1268,9 +1271,9 @@ limit 100;
12681271
}
12691272
}
12701273

1271-
Y_UNIT_TEST(TPCH9) {
1274+
Y_UNIT_TEST_TWIN(TPCH9, StreamLookupJoin) {
12721275

1273-
auto kikimr = GetKikimrWithJoinSettings();
1276+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
12741277
auto db = kikimr.GetTableClient();
12751278
auto session = db.CreateSession().GetValueSync().GetSession();
12761279

@@ -1346,9 +1349,9 @@ order by
13461349
}
13471350
}
13481351

1349-
Y_UNIT_TEST(TPCH3) {
1352+
Y_UNIT_TEST_TWIN(TPCH3, StreamLookupJoin) {
13501353

1351-
auto kikimr = GetKikimrWithJoinSettings();
1354+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
13521355
auto db = kikimr.GetTableClient();
13531356
auto session = db.CreateSession().GetValueSync().GetSession();
13541357

@@ -1419,9 +1422,9 @@ limit 10;
14191422
}
14201423
}
14211424

1422-
Y_UNIT_TEST(TPCH21) {
1425+
Y_UNIT_TEST_TWIN(TPCH21, StreamLookupJoin) {
14231426

1424-
auto kikimr = GetKikimrWithJoinSettings();
1427+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
14251428
auto db = kikimr.GetTableClient();
14261429
auto session = db.CreateSession().GetValueSync().GetSession();
14271430

@@ -1489,9 +1492,9 @@ limit 100;)");
14891492
}
14901493
}
14911494

1492-
Y_UNIT_TEST(TPCH5) {
1495+
Y_UNIT_TEST_TWIN(TPCH5, StreamLookupJoin) {
14931496

1494-
auto kikimr = GetKikimrWithJoinSettings();
1497+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
14951498
auto db = kikimr.GetTableClient();
14961499
auto session = db.CreateSession().GetValueSync().GetSession();
14971500

@@ -1614,9 +1617,9 @@ order by
16141617
}
16151618
}
16161619

1617-
Y_UNIT_TEST(TPCH10) {
1620+
Y_UNIT_TEST_TWIN(TPCH10, StreamLookupJoin) {
16181621

1619-
auto kikimr = GetKikimrWithJoinSettings();
1622+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
16201623
auto db = kikimr.GetTableClient();
16211624
auto session = db.CreateSession().GetValueSync().GetSession();
16221625

@@ -1724,9 +1727,9 @@ limit 20;
17241727
}
17251728
}
17261729

1727-
Y_UNIT_TEST(TPCH11) {
1730+
Y_UNIT_TEST_TWIN(TPCH11, StreamLookupJoin) {
17281731

1729-
auto kikimr = GetKikimrWithJoinSettings();
1732+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
17301733
auto db = kikimr.GetTableClient();
17311734
auto session = db.CreateSession().GetValueSync().GetSession();
17321735

@@ -1807,9 +1810,9 @@ order by
18071810
}
18081811
}
18091812

1810-
Y_UNIT_TEST(TPCDS16) {
1813+
Y_UNIT_TEST_TWIN(TPCDS16, StreamLookupJoin) {
18111814

1812-
auto kikimr = GetKikimrWithJoinSettings();
1815+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
18131816
auto db = kikimr.GetTableClient();
18141817
auto session = db.CreateSession().GetValueSync().GetSession();
18151818

@@ -1863,9 +1866,9 @@ limit 100;
18631866
}
18641867
}
18651868

1866-
Y_UNIT_TEST(TPCDS61) {
1869+
Y_UNIT_TEST_TWIN(TPCDS61, StreamLookupJoin) {
18671870

1868-
auto kikimr = GetKikimrWithJoinSettings();
1871+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
18691872
auto db = kikimr.GetTableClient();
18701873
auto session = db.CreateSession().GetValueSync().GetSession();
18711874

@@ -1931,9 +1934,9 @@ limit 100;
19311934
}
19321935
}
19331936

1934-
Y_UNIT_TEST(TPCDS92) {
1937+
Y_UNIT_TEST_TWIN(TPCDS92, StreamLookupJoin) {
19351938

1936-
auto kikimr = GetKikimrWithJoinSettings();
1939+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
19371940
auto db = kikimr.GetTableClient();
19381941
auto session = db.CreateSession().GetValueSync().GetSession();
19391942

@@ -1989,9 +1992,9 @@ limit 100;
19891992
}
19901993
}
19911994

1992-
Y_UNIT_TEST(TPCDS94) {
1995+
Y_UNIT_TEST_TWIN(TPCDS94, StreamLookupJoin) {
19931996

1994-
auto kikimr = GetKikimrWithJoinSettings();
1997+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
19951998
auto db = kikimr.GetTableClient();
19961999
auto session = db.CreateSession().GetValueSync().GetSession();
19972000

@@ -2042,9 +2045,9 @@ limit 100;
20422045
}
20432046
}
20442047

2045-
Y_UNIT_TEST(TPCDS95) {
2048+
Y_UNIT_TEST_TWIN(TPCDS95, StreamLookupJoin) {
20462049

2047-
auto kikimr = GetKikimrWithJoinSettings();
2050+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
20482051
auto db = kikimr.GetTableClient();
20492052
auto session = db.CreateSession().GetValueSync().GetSession();
20502053

@@ -2097,9 +2100,9 @@ limit 100;
20972100
}
20982101
}
20992102

2100-
Y_UNIT_TEST(TPCDS96) {
2103+
Y_UNIT_TEST_TWIN(TPCDS96, StreamLookupJoin) {
21012104

2102-
auto kikimr = GetKikimrWithJoinSettings();
2105+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
21032106
auto db = kikimr.GetTableClient();
21042107
auto session = db.CreateSession().GetValueSync().GetSession();
21052108

@@ -2136,9 +2139,9 @@ limit 100;
21362139
}
21372140
}
21382141

2139-
Y_UNIT_TEST(TPCDS88) {
2142+
Y_UNIT_TEST_TWIN(TPCDS88, StreamLookupJoin) {
21402143

2141-
auto kikimr = GetKikimrWithJoinSettings();
2144+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
21422145
auto db = kikimr.GetTableClient();
21432146
auto session = db.CreateSession().GetValueSync().GetSession();
21442147

@@ -2253,9 +2256,9 @@ from
22532256
}
22542257
}
22552258

2256-
Y_UNIT_TEST(TPCDS90) {
2259+
Y_UNIT_TEST_TWIN(TPCDS90, StreamLookupJoin) {
22572260

2258-
auto kikimr = GetKikimrWithJoinSettings();
2261+
auto kikimr = GetKikimrWithJoinSettings(StreamLookupJoin);
22592262
auto db = kikimr.GetTableClient();
22602263
auto session = db.CreateSession().GetValueSync().GetSession();
22612264

ydb/library/yql/dq/type_ann/dq_type_ann.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,14 @@ TStatus AnnotateDqReplicate(const TExprNode::TPtr& input, TExprContext& ctx) {
778778
if (!EnsurePersistableType(replicateInput->Pos(), *inputItemType, ctx)) {
779779
return TStatus::Error;
780780
}
781-
if (!EnsureStructType(replicateInput->Pos(), *inputItemType, ctx)) {
781+
782+
if (inputItemType->GetKind() == ETypeAnnotationKind::Tuple) {
783+
for (const auto& tupleItemType : inputItemType->Cast<TTupleExprType>()->GetItems()) {
784+
if (!EnsureStructType(replicateInput->Pos(), *tupleItemType, ctx)) {
785+
return TStatus::Error;
786+
}
787+
}
788+
} else if (!EnsureStructType(replicateInput->Pos(), *inputItemType, ctx)) {
782789
return TStatus::Error;
783790
}
784791
const TTypeAnnotationNode* lambdaInputFlowType = ctx.MakeType<TFlowExprType>(inputItemType);

0 commit comments

Comments
 (0)