Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sql: better distribute distinct processors #52098

Merged
merged 2 commits into from
Aug 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 40 additions & 21 deletions pkg/sql/distsql_physical_planner.go
Original file line number Diff line number Diff line change
Expand Up @@ -2862,19 +2862,25 @@ func (dsp *DistSQLPlanner) createPlanForZero(
return dsp.createValuesPlan(types, 0 /* numRows */, nil /* rawBytes */)
}

func createDistinctSpec(n *distinctNode, cols []int) *execinfrapb.DistinctSpec {
func createDistinctSpec(
distinctOnColIdxs util.FastIntSet,
columnsInOrder util.FastIntSet,
nullsAreDistinct bool,
errorOnDup string,
cols []int,
) *execinfrapb.DistinctSpec {
var orderedColumns []uint32
if !n.columnsInOrder.Empty() {
orderedColumns = make([]uint32, 0, n.columnsInOrder.Len())
for i, ok := n.columnsInOrder.Next(0); ok; i, ok = n.columnsInOrder.Next(i + 1) {
if !columnsInOrder.Empty() {
orderedColumns = make([]uint32, 0, columnsInOrder.Len())
for i, ok := columnsInOrder.Next(0); ok; i, ok = columnsInOrder.Next(i + 1) {
orderedColumns = append(orderedColumns, uint32(cols[i]))
}
}

var distinctColumns []uint32
if !n.distinctOnColIdxs.Empty() {
if !distinctOnColIdxs.Empty() {
for planCol, streamCol := range cols {
if streamCol != -1 && n.distinctOnColIdxs.Contains(planCol) {
if streamCol != -1 && distinctOnColIdxs.Contains(planCol) {
distinctColumns = append(distinctColumns, uint32(streamCol))
}
}
Expand All @@ -2890,8 +2896,8 @@ func createDistinctSpec(n *distinctNode, cols []int) *execinfrapb.DistinctSpec {
return &execinfrapb.DistinctSpec{
OrderedColumns: orderedColumns,
DistinctColumns: distinctColumns,
NullsAreDistinct: n.nullsAreDistinct,
ErrorOnDup: n.errorOnDup,
NullsAreDistinct: nullsAreDistinct,
ErrorOnDup: errorOnDup,
}
}

Expand All @@ -2902,26 +2908,39 @@ func (dsp *DistSQLPlanner) createPlanForDistinct(
if err != nil {
return nil, err
}
currentResultRouters := plan.ResultRouters
spec := createDistinctSpec(
n.distinctOnColIdxs,
n.columnsInOrder,
n.nullsAreDistinct,
n.errorOnDup,
plan.PlanToStreamColMap,
)
dsp.addDistinctProcessors(plan, spec, n.reqOrdering)
return plan, nil
}

func (dsp *DistSQLPlanner) addDistinctProcessors(
plan *PhysicalPlan, spec *execinfrapb.DistinctSpec, reqOrdering ReqOrdering,
) {
distinctSpec := execinfrapb.ProcessorCoreUnion{
Distinct: createDistinctSpec(n, plan.PlanToStreamColMap),
}

if len(currentResultRouters) == 1 {
plan.AddNoGroupingStage(distinctSpec, execinfrapb.PostProcessSpec{}, plan.ResultTypes, plan.MergeOrdering)
return plan, nil
Distinct: spec,
}

// TODO(arjun): This is potentially memory inefficient if we don't have any sorted columns.
defer func() {
plan.SetMergeOrdering(dsp.convertOrdering(reqOrdering, plan.PlanToStreamColMap))
}()

// Add distinct processors local to each existing current result processor.
plan.AddNoGroupingStage(distinctSpec, execinfrapb.PostProcessSpec{}, plan.ResultTypes, plan.MergeOrdering)
if !plan.IsLastStageDistributed() {
return
}

// TODO(arjun): We could distribute this final stage by hash.
plan.AddSingleGroupStage(dsp.gatewayNodeID, distinctSpec, execinfrapb.PostProcessSpec{}, plan.ResultTypes)

return plan, nil
nodes := getNodesOfRouters(plan.ResultRouters, plan.Processors)
plan.AddStageOnNodes(
nodes, distinctSpec, execinfrapb.PostProcessSpec{},
distinctSpec.Distinct.DistinctColumns, plan.ResultTypes,
plan.MergeOrdering, plan.ResultRouters,
)
}

func (dsp *DistSQLPlanner) createPlanForOrdinality(
Expand Down
13 changes: 12 additions & 1 deletion pkg/sql/distsql_spec_exec_factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,18 @@ func (e *distSQLSpecExecFactory) ConstructDistinct(
nullsAreDistinct bool,
errorOnDup string,
) (exec.Node, error) {
return nil, unimplemented.NewWithIssue(47473, "experimental opt-driven distsql planning: distinct")
physPlan, plan := getPhysPlan(input)
spec := createDistinctSpec(
distinctCols,
orderedCols,
nullsAreDistinct,
errorOnDup,
physPlan.PlanToStreamColMap,
)
e.dsp.addDistinctProcessors(physPlan, spec, ReqOrdering(reqOrdering))
// Since addition of distinct processors doesn't change any properties of
// the physical plan, we don't need to update any of those.
return plan, nil
}

func (e *distSQLSpecExecFactory) ConstructSetOp(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,3 +109,12 @@ generate_series
1
2
3

# Check that distinct is supported.
query I rowsort
SELECT DISTINCT v FROM kv
----
1
2
NULL
3
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ https://cockroachdb.github.io/distsqlplan/decode.html#eJzcml1v4jgYhe_3V1i-oprQxE
query T
SELECT url FROM [EXPLAIN ANALYZE (DISTSQL) SELECT DISTINCT(kw.w) FROM kv JOIN kw ON kv.k = kw.w ORDER BY kw.w]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJzMWU1v4zYQvfdXEHNKUDkS9eE4AhZIunFRL1J7a-fQ7cIHxWJjwYrkknSyQeD_XkjehSNrQ-ojFnmLJA71ZvTevAz9Auy_GHyYDW-GH2_Rhsbo9-nkT_R1-Pfnm6vRGF2Nr26-_DNEJ9ej2e3sr5tT9H1pdj0af7xFJ6uns6fTXdjqEX2ajMZo9YQmY7R6PFuhDyh7jibT6-EU_fYlv5qDAUkaknHwQBj4XwGDATYY4IABLhjgwdyANU0XhLGUZkte8oBR-A18y4AoWW94dntuwCKlBPwX4BGPCfhwG9zFZEqCkFDTAgNCwoMozl-zerxc0-ghoM9gwGwdJMxHPTN78WTDfXSZwbgL-GJJGEo3fJ3dzLbgm3X86la2jJGYLHj0GPFnH1lnVraM8SCOEY8eiI8sBvOtAbuQXQI_AN49o2XAlkVolxjm23m-xz0BH2-NZhn3DzJ-Kmds4tc529rkbL-Z836fTZLSkFASFnaaZ5GyJT8p3B8BW35Ko4RQEx9QJSb_8pNLfPqBRvfL_K_3qhj5RhYbHqXJW1XbV8Spw4LriPEoWXATe6UydwXYbfEJRSnZVrOUvPYpeXW-wSylnFDTxodwf-0Mb7-AF1fvHFjeK027Zzrad8saOZ9X6JaFnHXtlrjjbom175YSFuy7ZV-TbmlXp61dQapOz3S1l2qNnAcVpFrIWVep2h1L1dZeqhIW7KV6rolUneq0dSpI1e2ZnvZSrZHzRQWpFnLWVapOx1J1tJeqhAV7qQ40kapbnbZuBal6Pe2FWiNjTy7UnolRkIQIo5QvCdVesm7HknW1l6yED3vJXmgiWcmMPSVsnSaMHH7Kn-5sZd-PhPdkxweWbuiCfKbpIn_N7nKSx-UTQ0gY3z21dxej5McjxoN87yolsSqzvg6kgX6QcKsyVW8OtTD19auTbanAhGsw3NYB0kA_SLhVmZoyXIKpr1-dDhjeESb7EJP1GpNTgGQdBjvCYLeo2MNgVxjsid_sCYPtIuWsbkrZ188OxZCU2KEYUjs7PBImJXYoYVMrO2zaVM_1s0MxJCV2KIbUzg6PhEmJHUrY1MoOmzJ8IPSVC7EpXdSxw47-DdJwRpNgUuJKEkxqbEkGqpUvHYtRauY0HQc1HSe1Y45qxwLVypwa01zHYQ2LpzUsGddwrXmtozqXxkANDEqMqZVBHalOigxKAkrJ4CRjlBqDKh1YaGBQYkytDKoxzcWYFBmUBJSaw0QJo9QYVOnUomhQ5xKDKo2EGhhUaSR8P4M6EiY1E5QYkyKDkoBSY1ASRqkxqNLhxfsZVGOaizGpmaDEmBQZlASUGoOSMErNz12l04viD0dYbFB2aSpUYFDz7S__BwAA__-NY9YN
https://cockroachdb.github.io/distsqlplan/decode.html#eJzUWlFv4kYQfu-vWO1ToprYu7ZJsHRS0gtVOaVwhTz0euLBgW2wcGxqL8lFUf57ZThEjLkdGx-ezVsIXvPNfrPffDP2C03_C6lHR92b7sdbskxC8vtw8Cf52v37881Vr0-u-lc3X_7pkpPr3uh29NfNKfl-afa51_94S07mT2dPp-tl80fyadDrk_kTGfTJ_PFsTj6Q7HsyGF53h-S3L6tPY2rQKJ6Kvv8gUup9pYwalFOD2tSgDjWoS8cGXSTxRKRpnGSXvKwW9KbfqGcZNIgWS5n9e2zQSZwI6r1QGchQUI_e-nehGAp_KhLTogadCukH4epn5o-XiyR48JNnatDRwo9Sj7TM7IcHS-mRywzGnS8nM5GSeCkX2T-zW8jlInzzr-yyVIRiIoPHQD57xDqzsstS6YchkcGD8IiV0vGrQddL1gFsAN49k5mfzvLQLhkdv45X97gX1GOvxmERt3cifipGbLK3MXNtYuY_jHl7n2UUJ1ORiGnuTuNsJXTJno37w09nn-IgEonJdlIlFP_Kk0t2-iEJ7merv37WjolvYrKUQRz9aNe2O2JXyYLrIJVBNJEmcwvbfFzA1Wh2atCsCptbDYe9DcmtwtMoTqRITF5g6dfG8LZLULCPgBXIvSz041a8MO0dCkpE49aP5jwXDSuvlQyuDiZvmbb29aFCzOcl6kMuZl3rA2u4PjDt6wOQBdv60H5H9aEazcr6wDSpDwBPm_pQYAmrPvDy6sJLKKrdMh3tFbVCzBclFDUXs66KyhtWVK69ogJZsFXU83ekqNVoVioq10RRAZ42ilpgCUtR7fLqYpdQVKdlutoraoWYOyUUNRezropqN6yotvaKCmTBVlEv3pGiVqNZqai2JooK8LRR1AJLWIrqlFcXp4Siui3t9bRCxC6spy2TET-aEkZiOROJ9srqNKysjvbKCuTDVlk770hZq9GsVFZHE2UFeNooa4ElHabDe_AORbqIo1Tsnri9d7YyisT0Xqz5TONlMhGfk3iy-pn1x8Fq3WpKMhWpXH_L1x960earVPqy7IjZKi1OVSB19IPE3DqYymt4JeaYfvvEzzEwsQoZznWA1NEP0k6GV8R0aIYDzDH99mknwxvCxHcxWW8x2TlI1u5iWxmQg6FsakgMRdkATCjKpsbEbQ0xoVRvR3k-XPX5cJWL2_l4dhe31Sczn8lWM7txrp_jU0NCyRk1pHqO70jMoegigKmWLh5aPy70c3xqSCiOTw2pnuM7DiYcxwdgquX4Ds3wjrKuMEtd0pi6Tavl-Q721UCLXUvcDm5AAFA4_SzQZKPYPggUSg1nhWYtf0w4cEzUfVUbJSMBf42yzWpMONQD_RqKf4PIw9E4ABSOxhVaNnwLB2DCmdqpMeGYOIi8Wi7u4DQHQKEM7ph6uMDaQIEqjBc08HFqTDjDOwgUSpcKgELycQAonGJeGDLkj8kFcEwKHZwGPq7QwWng49SYalF_pH1C8nEAeTgaB4BC8XG8yusFTT0tq_J-QUPuBMCE4-Mg8lCmcRAonAew6kEDBwYNvDBowPdxACYcHweBwtE4Nah6Pu5gQQFAofg4Xhg15I-JAxwT9XNcFB_HCx3cz_NxR8KEQ70aE46Pg8jD0TgAFI7GAW0himdSY0KZxwGYkHwcQB6OjwNA4fg49aCBA4MGrn5UjOPjgMf8OBoHgMLROOBBP8o8DgKFMpTh6tcPbOD1A7vQwiH4uPHrL_8HAAD__7oqa9U=

# This query verifies stats collection for WITH ORDINALITY and the hashJoiner.
query T
Expand Down
8 changes: 4 additions & 4 deletions pkg/sql/opt/exec/execbuilder/testdata/distsql_agg
Original file line number Diff line number Diff line change
Expand Up @@ -133,12 +133,12 @@ https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF2L2kAUhu_7K4ZzpTCSzC
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT (a) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslEFvmzAYhu_7FdZ3ajUjMJA05ZSpzSSkLOmSHCZVHDz8qUOimNlG2hTlv0_AlC7RYqySo8Evz_vwWd6D_llCAtvFcvGwI40qyefN-gt5Xnx7Wn5KV-TmMd3utl-Xt-Tvlnadrh525Ibf9nsFNzwDCpUUuOKvqCF5BgYUQqAQAYUYKEwgo1ArmaPWUrVb9l0gFb8gCSgUVd2Y9nFGIZcKIdmDKUyJkMCOfy9xg1yg8gOgINDwouwwLXteq-KVq99AYVvzSifE8xnhlSCMSPMDFVBYNyYhcwbZgYJszBtLG_6CkLADde_zWGhTVLnxJ6dl5q30WglUKKy08CLtDSL775wTPkJ2sFViwTs7RSedmPtEmMtEfOb54aiZDDQ6_oDpVWYSuvuHTv6h50ej_AcaHf3vruIfuftHTv6R58ej_AcaHf1nV_GP3f1jJ__Y8yej_AcaHf3vr34n_Ye2QV3LSuMJ69KXg_bCQvGC_QWnZaNyfFIy7zD9ct3lugcCtenfsn6RVv2rtuC_YWYNhydhdh4O7eQBdGRNx_ZwPKb3xBqe2snTMeQ7a3hmJ8_GkO_tswoGjon9kJ2zs8OHPwEAAP__EaTtnQ==
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lU1r4zwQx-_PpxBzanlkHPklbX3q0nYhkE26SQ4LxQc1Fo0htbySDFtCvvvieEmal2ocZHKUrZ_mb_2G8Qr07yUkMH0aPj3MSKWW5Ptk_IO8PP16Hn4bjMjV42A6m_4cXpN_W-r1YPQwI1f8utmbccNToFDITIz4u9CQvAADCgFQCIFCBBRiSCmUSs6F1lLVW1YbYJD9gaRHIS_KytSPUwpzqQQkKzC5WQpIYMZfl2IieCaU3wMKmTA8X27K1LXvS5W_c_UBFKYlL3RCPJ8RXmSEEWkWQgGFcWUScs8gXVOQldnV0oa_CUjYmrbP85hrkxdz48f7Ye7rjx6rTCiRnai2O-D1gyy4XhzR6XqXKPgy0e4c2dQ6POf_5qAvY7PeWbl3mcIWmariVKqTgUbSk6XP4oOdp2tHe7VZ-45hbTrGZ54fOPUMkmh7-f2L9QzrtGdYJz0TtPcWtPIWeH7o5A1JtL2Am4t5Czr1FnTiLWzvLWzlLfT8yMkbkmh7AbcX8xZ26i3sxFvU3lvUylvk-bGTNyTR9gLuLuYt6tRb1Pm_9US5idClLLRo9efs1YFF9iaaD9SyUnPxrOR8U6ZZjjfc5kEmtGnesmYxKJpXdcDPMDuE2Wc42IPZeXDfBb5zgZlTbhbb6cB636EdDu2y-nZbkZWO7XDsotoOI6rtMKLaDmOqERpR3XdRfWOFb-2ybl1k2WFElh1GZNlhTBZCI7LuXGQxZIpiY9RtjroNUrdJ6jhK3WYpcxqmDJmmESLtaJyeJc1OY9LsNCbNTqPSEByTdjRUrdLS9X9_AwAA__9Q4BZ6

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT SUM (DISTINCT A) FROM data]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJyslEFvmzAYhu_7FdZ3ajRHxECahlOqNpMipUkXMmlSxcHDnxgSwcw20qYo_30CpnRUi6EjR4xfnvfhs3wE_SODAMLlevmwJ6XKyKfd9om8LL8-r-9XG3LzuAr34ef1iPzZostDvbbaPOwJHzXbBTc8Agq5FLjhB9QQvAADCi5Q8ICCDxSmEFEolIxRa6mqLcc6sBI_IZhQSPOiNNVyRCGWCiE4gklNhhDAnn_LcIdcoHImQEGg4WlWYyr2olDpgatfQCEseK4DMnYY4bkgjEjzHRVQ2JYmIAsG0YmCLM0rSxueIATsRPv3eUy1SfPYONN2mUUlvVUCFQorzb1Ie4XI5jtvCR8hOtkqscl_dvLe8wfuk0Rhwo1UDmNtYPjl6WbBRhc5fovD-k-e9Zm8w8aOO2j2HY3OP_r2KrN3-_u7vfzdseMN8u9odPafXcXf6-_v9fL3xo4_yL-j0dn_7ir-fn9_v5e_P3amg_w7Gp3951e_-_5B26EuZK6xxbr05Ul1MaJIsLlItSxVjM9KxjWmedzWuXpBoDbNW9Y8rPLmVVXw7zCzht1WmL0Nu9awZyd79tquPe1b01N7eDpE-tYantnJsyHkO2t4bifPh5BZxxnrOmTvO2XR6cPvAAAA___0BiUG
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9r4kAUxd_3U4T71LKReCfxX54sbReEtnarCwvFh6kZrGATd2YCW4rffdEsGv_dm5DgozFn7p1zfhzyBebPAkIY3T_c346dVC-cHy_DR-f1_vfzw83gybm6G4zGo58P187_V0z6sXk2eLodO_I6ez2SVk7AhTiJ1JP8UAbCV0BwQYALPrgQgAstmLiw1MlUGZPo9StfG8Eg-gth04V5vEzt-vHEhWmiFYRfYOd2oSCEsXxbqBclI6W9JrgQKSvni82Y9ez-Us8_pP4EF0ZLGZvQaXjoyDhy0Ensu9LgwjC1odNHmKxcSFK7m2WsnCkIceUW3-dubuw8nlqvtb9Mf33poY6UVtGJabsD3j6dd2nej9ST1W4jcXaj3TlJNuvwnO_ZQWfXxmapvXc7-WVcupnNtJpJm2gPD4wa_Xq86uP12TlBgbun8anbn7x4bhPRLLdJa28TLM4pFuHUw4YnKpHKbLSNvH0xUrFWUrEWUhmX8qS2q5AqivMhCvEhGp5fiQ9mo63RnYvxIWrlQ9TCB-NSno9OFT784nz4hfjwG15QiQ9mo63R3Yvx4dfKh18LH4xLeT66VfgIivMRFOIjaHitSnwwG22N7l2Mj6BWPoJa-GBcyvPRq-tL6MScF2WWSWzUwRfR6ZOba2NUNFOZkSZJ9VQ962S6GZP9HG50mweRMjb7F7Mfgzj7a71gXoyHYsyLxZ4Yy4k7VcSIldStSuoerRak4T5tuE-KA3pyQIoFk3WLVLdpcbsKKLSYAYUWc6AwagYURs2A0iEN79KGd6uA0qM7ocmUwlGllGoFWs3VAq1me4GRc8XAyJnA8ahY9n0XjO90szCZI10tGDDDj8qlVOi0mgudVrOhM3IudEbOhU73KjLFikcdUyp0umOQKRk8aplSodNqLnRazYbOyLnQGTkXOt2wgmlYQX-0HYY-WX37FwAA__89ryzV

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT SUM (DISTINCT A), SUM (DISTINCT B) FROM data]
Expand All @@ -148,12 +148,12 @@ https://cockroachdb.github.io/distsqlplan/decode.html#eJyslFFr2zAUhd_3K8R9WkDBke
query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT a, b FROM data WHERE (a + b + c::INT) = 27 ORDER BY a,b]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lFFr2zAUhd_3Ky73KSUKjmSnTQUDb43LDFnSOYFtFD8otugMrp1JCmyE_Pdhe6RNWGVDsjxeSUffuecKbVH_zJHjIpgGd0vYqBzuo_lneAy-PUw_hDPoTcLFcvFlegV_j1R1OLtbgiCwag6nwgj4-imIAuj1BPRhdQV9SDgPZ8vxFbwHdgPzaBJE8PF7LYuRYFGmciaepUb-iBQJMiToIkEPCY4wJrhWZSK1LlV1ZFsLwvQX8iHBrFhvTLUcE0xKJZFv0WQml8hxKVa5jKRIpXKGSDCVRmR5jamM-muVPQv1Gwku1qLQHAYOBVGkQKE0P6RCgvdZbqTi0Ov5FPrgs6of333dEG8KJDjfGA4-JT7DeEew3JgXb9qIJ4mc7kh3_5NMm6xIjDM6NN8gCM5VKpVM25jsTeYLqmyuOub0ic_6GO9s5ujwJHfugTvafaK0y0QdOnDYRWfa0sE-tuszzpR1T411So0NHPeiqbV0sE_t5oypud1Tczul5g4c76KptXSwT218xtS87ql5nVLzBs7ooqm1dLBP7fY__br_YEZSr8tCywPiWzcPq-9Ypk-y-cJ1uVGJfFBlUmOacl7r6oVUatPs0qYIi2arMvhaTK1idiCmx2JmJ7egXavas4u9U3yPrOJrO_n6FPKNVTy2k8enkG_tsxq2PBP7Iztmx7t3fwIAAP__j8c3KA==
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9r2zwUh-_fT3E4VylRcCQ7aWp4wVubskCXdElgGyUXSixaQ2pnkgIrJd992B5J0z-SO7m-lO1H-h09h4MfUf1aY4iz4dXwfA5buYbL6eQr3Ax_XF99Go2hdTGazWffrk7g7yf5ejQ-nwMnsCw_jrnm8P3LcDqEVotDG5Yn0IZVGI7G88EJ_A_sFCbTi-EUPv8ssAUSTLNYjPm9UBjeIEWCDAn6SDBAgj1cENzIbCWUymT-yWMBjOLfGHYJJulmq_PHC4KrTAoMH1Enei0wxDlfrsVU8FhIr4sEY6F5si6OyYNGG5ncc_mABGcbnqoQOh4FnsZAIdN3QiLBy2SthQyh1YootCFieT2R_7SgsFwgwclWhxBREjFc7AhmW33IpjS_FRjSHame_yJROklX2usdhy-PIDiRsZAifv3MwzbLB7jj6u61PRa7QzT2ZrTDVll54vOt2iRi7XKzN2ug3X8o4pDO_5B046yTbTx6fL9vRQiOItDqvUer9J5HOx5rtPssFezN9ZvvPlp799Eau49VV88qqWcdz29UvaWC_bWdNq-e1a6e1ajer67er6Te73hBo-otFeyvbdC8er929X6N6oPq6oNK6oOO12tUvaWC_bWdNa8-qF198EG_G68cOhVqk6VKVPqL6OaxRXwrylJVtpUrcS2zVXFMuZwUXPEgFkqXb2m5GKXlqzzgU5g-h-lTmB3B9H1w3wU-c4GpU27aM9PMeN--GfbNsvpmW4GR7pnhnotqM2xRbYYtqs2wTbWFtqjuu6g-NcIDs6yBiywzbJFlhi2yzLBNloW2yDpzkUUtU9Q2Rt3mqNsgdZukjqPUbZZSp2FKLdM0sEh7MU7fJc1M26SZaZs0M22VZsFt0l4MVaO0xe6_PwEAAP__881r5g==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT DISTINCT a, b FROM data WHERE (a + b + c::INT) = 27 ORDER BY b,a]
----
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lVGL2kAUhd_7Ky73ySUjcSZx1YFC2jVLA1a3UWjLkocxGbaBbGInI7SI_73EFHeVOsmi9fHOzJnv3JPLZIPlzww5zv2Jf7eAtcrgPpx9hkf_28PkQzCFzjiYL-ZfJjfw90hVB9O7BQgCy_pwIrSAr5_80IdOR4AFyxuwIOY8mC6GN_Ae2ABm4dgP4eN3WBIQERLMi0ROxbMskT8iRYIMCTpI0EWCfYwIrlQRy7IsVHVksxMEyS_kPYJpvlrrajkiGBdKIt-gTnUmkeNCLDMZSpFIZfeQYCK1SLMdpjLqrVT6LNRvJDhfibzk0LUpiDwBCoX-IRUSvE8zLRWHTsejYIHHqn4853VDvC6Q4GytOXiUeAyjLcFirV-8lVo8SeR0S9r7H6elTvNY2_1D8zWC4EwlUsmkiclOMl9QRX3VMcciHrMw2prM0d5Z7py3JDIvlJbKpvQIySziUeskwz1g0PZTQ9tMjU27Nrvq3DR0sP80txecG9Y-NdYqNda1naum1tDBPrXBBVNz2qfmtErN6druVVNr6GCf2vCCqbntU3NbpeZ27f5VU2voYJ_a6D-97P9ghrJcFXkpD4inbu5VT75MnmT9myiLtYrlgyriHaYuZzvdbiGRpa53aV0Eeb1VGXwtpkYxOxDTYzEzih0z2THbZma1a1T3zeL-OU3fGsUDM3lwDnloFI_M5NE5ZNowY01D9rYpi7bv_gQAAP__AKVrVw==
https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ltFr4koUxt_vX3E4TxZH4kxitYELube1rNDVrgq7S_FhNEMrWONORthS_N8Xzao16pykhjxG882c830_PvKO8a8Z-jhoP7Rvh7DUM7jv977CU_vH48N_nS5U7jqD4eDbwxX8fWX93OneDkEyGCcvh9JI-P6l3W9DpSKhCuMrqMLE9zvdYesK_gXRhF7_rt2H_3_CmIEcIcN5FKqufFUx-k_IkaFAhi4y9JBhA0cMFzqaqDiO9PqV942gE_5Gv85wOl8szfrnEcNJpBX672imZqbQx6Ecz1RfyVBpp44MQ2XkdLa5Zj1osNDTV6nfkOFgIeexDzWHg5yHwCEyL0ojw_vpzCjtQ6UScKhCINb7BO7HhfzkARn2lsaHgLNA4GjFMFqa_Wyxkc8Kfb5i2ee_m8ZmOp8Yp3E4fHIFw54OlVbh6Tv3x4zf4EXGL6fOGK32o4mzo-2PipIb00dVWSCqyWFnd-D1Tyyxn87NY9wg0kZph6d9E1UW8OrZO7xPO7A7-MQw3agWLRxxuP65ERoHI_DsfPMsfDu85ohSCSc22NFxXT7hvHDCeYGEE8ZtCU_7lotwkR0vkQkvUXPcUvEiNthF0ywfL1E4XqJAvAjjtnilfcuFl5sdLzcTXm7N8UrFi9hgF02rfLzcwvFyC8SLMG6LV9q3XHh52fHyMuHl1ZxGqXgRG-yiuSkfL69wvLwC8SKM2-KV9u3Tn38n7uireBHNY5Xpq66-tkaFzyqxM46WeqIedTTZXJM89ja6zQ-hik3yL08eOvPkr_WAH8U8LeYfxeJAzPOJm5eIOb9I3bhIfWNXC6vhrt1w1yr27Dd7VrEgsm5Y1dd28fUloNjFBCh2MQUKoSZAIdQEKE2r4S274a1LQLmxd0KdKIWjSsnVCnY1VQt2NdkLhJwqBkJOBM6PiuXQd0H4bm8WInNurxbuEZcflUuu0O1qKnS7mgydkFOhE3IqdHuvcqJY-VHH5Ard3jGcKBl-1DK5QrerqdDtajJ0Qk6FTsip0O0NK4iGFfaPtnToo9U_fwIAAP__UdBziQ==

query T
SELECT url FROM [EXPLAIN (DISTSQL) SELECT c, d, sum(a+c::INT) + avg(b+d) FROM data GROUP BY c, d]
Expand Down
Loading