Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
105865: sql: expose whether streamer was used in EXPLAIN ANALYZE r=yuzefovich a=yuzefovich

This commit extends EXPLAIN ANALYZE for index and lookup joins to indicate whether the streamer API was used internally. Currently, to use the streamer or not is decided at the execution time, so it's only available in EXPLAIN ANALYZE flavors of EXPLAIN. Previously, this information could only be deduced from the trace and required non-trivial knowledge of what to look for.

This should make it easier to debug things, and the primary audience of this information are CRDB devs, thus, I omitted the release note.

Epic: None

Release note: None

106124: scripts/release-notes: new category "cluster virtualization". r=lnhsingh,nickvigilante a=knz

Epic: CRDB-29380

The category `cluster virtualization` (aliased to `multi-tenancy` and `virtualization`) encompasses changes to our cluster virtualization and multi-tenancy infrastructure that have UX surfaces: SQL syntax, cluster settings, etc.

This includes changes only visible to SREs.

Release note: None

Co-authored-by: Yahor Yuzefovich <yahor@cockroachlabs.com>
Co-authored-by: Raphael 'kena' Poss <knz@thaumogen.net>
  • Loading branch information
3 people committed Jul 5, 2023
3 parents 04fbe90 + b368827 + b832324 commit f788417
Show file tree
Hide file tree
Showing 16 changed files with 67 additions and 18 deletions.
1 change: 1 addition & 0 deletions githooks/commit-msg
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ else
"enterprise change") ;;
"backward-incompatible change") ;;
"performance improvement") ;;
"cluster virtualization" | "virtualization" | "multi-tenancy") ;;
"bug fix") ;;
"security update") ;;
operational*)
Expand Down
1 change: 1 addition & 0 deletions githooks/prepare-commit-msg
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ ${cchar}Release note (enterprise change): \\
${cchar} ^-- e.g., change to backup/restore\\
${cchar}Release note (backwards-incompatible change): \\
${cchar}Release note (performance improvement): \\
${cchar}Release note (cluster virtualization): \\
${cchar}Release note (bug fix): \\
;
Expand Down
2 changes: 2 additions & 0 deletions pkg/sql/colexecop/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ type KVReader interface {
// KV requests. It must be safe for concurrent use. It is used to calculate
// the SQL CPU time.
GetKVCPUTime() time.Duration
// UsedStreamer returns whether the Streamer API was used by the KVReader.
UsedStreamer() bool
}

// ZeroInputNode is an execopnode.OpNode with no inputs.
Expand Down
7 changes: 7 additions & 0 deletions pkg/sql/colfetcher/colbatch_scan.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,13 @@ func (s *colBatchScanBase) GetConsumedRU() uint64 {
return s.tenantConsumptionListener.ConsumedRU
}

// UsedStreamer is part of the colexecop.KVReader interface.
func (s *colBatchScanBase) UsedStreamer() bool {
// TODO(yuzefovich): update this when the streamer is used to power the
// ColBatchScans (#82164).
return false
}

// Release implements the execreleasable.Releasable interface.
func (s *colBatchScanBase) Release() {
// Deeply reset the spans so that we don't hold onto the keys of the spans.
Expand Down
5 changes: 5 additions & 0 deletions pkg/sql/colfetcher/index_join.go
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,11 @@ func (s *ColIndexJoin) GetConsumedRU() uint64 {
return s.tenantConsumptionListener.ConsumedRU
}

// UsedStreamer is part of the colexecop.KVReader interface.
func (s *ColIndexJoin) UsedStreamer() bool {
return s.usesStreamer
}

// inputBatchSizeLimit is a batch size limit for the number of input rows that
// will be used to form lookup spans for each scan. This is used as a proxy for
// result batch size in order to prevent OOMs, because index joins do not limit
Expand Down
1 change: 1 addition & 0 deletions pkg/sql/colflow/stats.go
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ func (vsc *vectorizedStatsCollectorImpl) GetStats() *execinfrapb.ComponentStats
s.KV.TuplesRead.Set(uint64(vsc.kvReader.GetRowsRead()))
s.KV.BatchRequestsIssued.Set(uint64(vsc.kvReader.GetBatchRequestsIssued()))
s.KV.ContentionTime.Set(vsc.kvReader.GetContentionTime())
s.KV.UsedStreamer = vsc.kvReader.UsedStreamer()
scanStats := vsc.kvReader.GetScanStats()
execstats.PopulateKVMVCCStats(&s.KV, &scanStats)
s.Exec.ConsumedRU.Set(vsc.kvReader.GetConsumedRU())
Expand Down
17 changes: 14 additions & 3 deletions pkg/sql/execinfrapb/component_stats.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,11 @@ const (
func (s *ComponentStats) StatsForQueryPlan() []string {
result := make([]string, 0, 4)
s.formatStats(func(key string, value interface{}) {
result = append(result, fmt.Sprintf("%s: %v", key, value))
if value != nil {
result = append(result, fmt.Sprintf("%s: %v", key, value))
} else {
result = append(result, key)
}
})
return result
}
Expand All @@ -93,12 +97,16 @@ func (ComponentID_Type) SafeValue() {}
func (s *ComponentStats) SafeFormat(w redact.SafePrinter, _ rune) {
w.Printf("ComponentStats{ID: %v", s.Component)
s.formatStats(func(key string, value interface{}) {
w.Printf(", %s: %v", redact.SafeString(key), value)
if value != nil {
w.Printf(", %s: %v", redact.SafeString(key), value)
} else {
w.Printf(", %s", redact.SafeString(key))
}
})
w.SafeRune('}')
}

// formatStats calls fn for each statistic that is set.
// formatStats calls fn for each statistic that is set. value can be nil.
func (s *ComponentStats) formatStats(fn func(suffix string, value interface{})) {
// Network Rx stats.
if s.NetRx.Latency.HasValue() {
Expand Down Expand Up @@ -189,6 +197,9 @@ func (s *ComponentStats) formatStats(fn func(suffix string, value interface{}))
humanizeutil.Count(s.KV.NumInternalSeeks.Value())),
)
}
if s.KV.UsedStreamer {
fn("used streamer", nil)
}

// Exec stats.
if s.Exec.ExecTime.HasValue() {
Expand Down
4 changes: 4 additions & 0 deletions pkg/sql/execinfrapb/component_stats.proto
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,10 @@ message KVStats {
optional util.optional.Uint num_gets = 21 [(gogoproto.nullable) = false];
optional util.optional.Uint num_scans = 22 [(gogoproto.nullable) = false];
optional util.optional.Uint num_reverse_scans = 23 [(gogoproto.nullable) = false];

// UsedStreamer indicates whether the Streamer API was used to perform KV
// operations.
optional bool used_streamer = 25 [(gogoproto.nullable) = false];
}

// ExecStats contains statistics about the execution of a component.
Expand Down
1 change: 1 addition & 0 deletions pkg/sql/instrumentation.go
Original file line number Diff line number Diff line change
Expand Up @@ -726,6 +726,7 @@ func (m execNodeTraceMetadata) annotateExplain(
nodeStats.KVPairsRead.MaybeAdd(stats.KV.KVPairsRead)
nodeStats.KVRowsRead.MaybeAdd(stats.KV.TuplesRead)
nodeStats.KVBatchRequestsIssued.MaybeAdd(stats.KV.BatchRequestsIssued)
nodeStats.UsedStreamer = stats.KV.UsedStreamer
nodeStats.StepCount.MaybeAdd(stats.KV.NumInterfaceSteps)
nodeStats.InternalStepCount.MaybeAdd(stats.KV.NumInternalSteps)
nodeStats.SeekCount.MaybeAdd(stats.KV.NumInterfaceSeeks)
Expand Down
12 changes: 6 additions & 6 deletions pkg/sql/opt/exec/execbuilder/testdata/inverted_index_geospatial
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ regions: <hidden>
│ actual row count: 2
│ filter: st_intersects('010100002026690000000000000C6A18410000008081844E41', geom)
└── • index join
└── • index join (streamer)
│ nodes: <hidden>
│ regions: <hidden>
│ actual row count: 2
Expand Down Expand Up @@ -83,7 +83,7 @@ regions: <hidden>
table: geo_table@geom_index
spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVuFu4kYQ_t-nGM2fJKqj7NoO5baqREO4lrY5IkBXnWqENvaEWNi7vt2lIYp4rL5An6yyHaJgAnf0dNL5x8LMzn6emW8-rR_RfsxQ4Kj3R687hjm8HQ6uYEZ66uRNRvDnr71hD6ybpsqRsRQ7e3w0GvYvf_Jbb3j7x-tB_934OGSMsQCqHxacHAnxS29w1RsPP3glVn4Cg-FlbwgXH2COHiqd0DuZk0XxF3KceFgYHZO12pSuxyqgnyxRMA9TVSxc6Z54GGtDKB7RpS4jFDgucxySTMicMfQwISfTrIJ9LqFTJjBNVUJL9LCrs0WurIB5nRl6OCpk6TiL8CKKlrdJFC05i6Il-9SCp4ee4RGCVAkEDLS7I2PRw9_fg0tzEsD-_efJjrVypFyq1daW0fcWEop1QomAsHbePDiyYEgmAgIfLmrvbHjdhVhmmX0OLGRq1oFt9PDqfbcL1lEBsV4oB8e0dGepcicCWNXQOoBovisgl0vIKdfmAWSW6Vi6Mi9W5XAjXXxHFvTCFQsnoIyv8l87QpysPKytJ4atkzNCwV-MRP8SBVt5nz8VffU3GUfJ2zRzZMic8c3RWO_3loUBraDDBdhyCMA6aZyoSA1-OI8i5rMoYuxTCwKp5NBj5SxsDcOgbEunzLcqsKK7Zq-2rZNZtjkUtKR4sT0r-4gp9-zHDBzlBSSpncPCyhl9Nm_-Tt78Bm_8EN5-06l6ErO_R8z1v2kxp4fXBf0livK3FcVbrynK31ZU-NUV9fWICxrE-YcQ9yy0YJO22i-a1wfjjJcXhc_8VusNe_l0Wz_zdshro83avB2GvZAfiZc3Ssc_2SkV_39I5QvaFjbaFhzStpE2jsxZuNm0Dv_-W1P1eaPK8JAqh2QLrSxtVLnrTazxplO-mnhIyYzqDwOrFyama6PjKrY2BxVQ5UjIunqX10ZfrbesMyTz58vkJRLfi-TvRuJNJH8vUrAbyW8iBXuRwt1IQRMp3It0vq9PEw9vM30_TRMUuNbo6SvL-sHygJzZcgBGd_q-gh0_FCV9tzKz5OGVnNMlOTJ5qlLr0hiFMwtarb77LwAA__83h1tE
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVuFu4kYQ_t-nGM2fJKqj7NoO5baqREO4lrY5IkBXnWqENvaEWNi7vt11QxTxWH2BPlllO0QBAnf0KvX8Y2FmZz_PzDef1o9oP2YocNT7rdcdwxzeDgdXMCM9dfImI_j9596wB9ZNU-XIWIqdPT4aDfuXP_itN7z9_fWg_258HDLGWAD1DwtOjoT4qTe46o2HH7wKKz-BwfCyN4SLDzBHD5VO6J3MyaL4AzlOPCyMjslabSrXYx3QTxYomIepKkpXuScextoQikd0qcsIBY6rHIckEzJnDD1MyMk0q2GfS-hUCUxTldACPezqrMyVFTBvMkMPR4WsHGcRXkTR4jaJogVnUbRgn1rw9NAzPEKQKoGAgXZ3ZCx6-Ot7cGlOAtjffz3ZsVaOlEu12toy-t5CQrFOKBEQNs6bB0cWDMlEQODDReOdDa-7EMsss8-BhUzNKrCNHl6973bBOiog1qVycEwLd5YqdyKA1Q1tAojmuwJyuYCccm0eQGaZjqWr8mJ1DjfSxXdkQZeuKJ2AKr7Of-UIcbL0sLGeGLZOzggFfzES_UsUbOl9_lT01Z9kHCVv08yRIXPG10djtd9bFAa0gg4XYKshAOukcaImNfjuPIqYz6KIsU8tCKSSQ49Vs7A1DIOqLZ0q37rAmu6Gvca2TmbZ-lDQguJye1b2EVPt2Y8ZOMoLSFI7h9LKGX02b_5O3vwN3vghvP2iU_UkZn-PmJt_02JOD68L-ksU5W8rirdeU5S_rajwP1FUaSkB6wzJnMz_RmSwQaR_CJHPwgvWaWz8YvM6YZzx6uLwmd9qvWEvn27rR94OeWO0WZu3w7AX8iPx8obp-Cc7peP_C-l8QdvCjbYFh7RtpI0jcxauN63Dv_3aVH6-UWV4SJVDsoVWltaq3PUmtvGmU76ceEjJjJoPBatLE9O10XEd25iDGqh2JGRds8sbo69WW43Eni-Xl0h8L5K_G4lvIvl7kYLdSP4mUrAXKdyNFGwihXuRzvf1aeLhbabvp2mCAlcaPX1lWT1YHZAzWw3A6E7f17Djh6Ki71Zmljy8knO6JEcmT1VqXRqjcKak5fKbfwIAAP__hpdg6A==

statement ok
DROP TABLE geo_table
Expand Down Expand Up @@ -134,7 +134,7 @@ regions: <hidden>
│ actual row count: 2
│ filter: st_intersects('010100002026690000000000000C6A18410000008081844E41', geom)
└── • index join
└── • index join (streamer)
│ nodes: <hidden>
│ regions: <hidden>
│ actual row count: 2
Expand Down Expand Up @@ -172,7 +172,7 @@ regions: <hidden>
table: geo_table@geom_index
spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVuFu4kYQ_t-nGM2fJKqj7NoO5baqREO4lrY5IkBXnQpCG3tCLOxd3-7SEEU8Vl-gT1atHaLgHLSoV6k6_1iY2dnPM_N9o_Uj2o85Chz1ful1x7CAt8PBFcxJz5y8yQl-_bE37IF1s0w5MpYSZ4-PRsP-5Xdh6w1vf3s96L8bH8eMMRZB9cOikyMhfugNrnrj4YfAYxUnMBhe9oZw8QEWGKDSKb2TBVkUvyHHaYCl0QlZq413PVYB_XSFggWYqXLpvHsaYKINoXhEl7mcUODY5zgkmZI5YxhgSk5meQX7XELHJzDLVEorDLCr82WhrIBFnRkGOCqld5xN8GIyWd2mk8mKRX5hf7Pg6aFn-ARBqhQiBtrdkbEY4M_vwWUFCWB__vFkJ1o5Ui7T6tWW0fcWUkp0SqmAsHbePDiyYEimAngLLmrvfHjdhUTmuX0OLGVmNoExBnj1vtsF66iERC-Vg2NaubNMuRMBrGpoHUC02BVQyBUUVGjzADLPdSKdz4tVOdxIl9yRBb105dIJ8PFV_htHiNN1gLX1xLB1ck4o-AtJ9C9RsHXwz1XRV7-TcZS-zXJHhswZ35bGZr-3Kg1oBR0uwHoRgHXSOFGRGn1zPpkwTyrz3O1dEEilhx7zWnglhoFvS8fnWxVY0V2zV9vWyTzfFgWtKFm-1so-Yvye_ZiDo6KENLMLWFo5p8_AW9jgjR_C2086U0_DHO4Z5vrfrFzQw6cH-sudqP-OuKhBXHgIcc-DFm3TVvtF8_pgnHF_UYQsbLXesJdPt_U9b8e8Ntqszdtx3Iv5kXh5o3TCk886Kv-ibXGjbdEhbRtp48icxdtN6_Cv_29Tfd6oMj6kyiHZUitLW1XuehNrvOmUr6cBUjqn-sPA6qVJ6NropIqtzUEFVDlSsq7e5bXRV5st6wzJ4vkyeYnE9yKFu5F4EyncixTtRgqbSNFepHg3UtREivcine_r0zTA21zfz7IUBW5m9PQTy-ZBf0DOrRfA6E7fV7Djh9LTdytzSwFeyQVdkiNTZCqzLktQOLOk9fqrvwIAAP__GeZbQA==
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVuFu4kYQ_t-nGM2fJKqj7NoO5baqREO4lrY5IkBXnQpCG3tCLOxd3-66IYp4rL5An6xaO0SBHLSoJ7XnHwszO_t5Zr75tH5E-zFHgaPeL73uGBbwdji4gjnpmZM3OcGvP_aGPbBulilHxlLi7PHRaNi__C5sveHtb68H_Xfj45gxxiKof1h0ciTED73BVW88_BB4rOIEBsPL3hAuPsACA1Q6pXeyIIviN-Q4DbA0OiFrtfGuxzqgny5RsAAzVVbOu6cBJtoQikd0mcsJBY59jkOSKZkzhgGm5GSW17DPJXR8ArNMpbTEALs6rwplBSyazDDAUSm942yCF5PJ8jadTJYs8gv7mwVPDz3DJwhSpRAx0O6OjMUAf34PLitIAPvzjyc70cqRcplWr7aMvreQUqJTSgWEjfPmwZEFQzIVwFtw0Xjnw-suJDLP7XNgKTOzDowxwKv33S5YRyUkulIOjmnpzjLlTgSwuqFNANFiV0Ahl1BQoc0DyDzXiXQ-L1bncCNdckcWdOXKygnw8XX-a0eI01WAjfXEsHVyTij4i5HoX6Jgq-CfT0Vf_U7GUfo2yx0ZMmd8czTW-71laUAr6HAB1g8BWCeNEzWp0TfnkwnzpDLP3d4FgVR66DE_C6-GYeDb0vH51gXWdDfsNbZ1Ms83h4KWlFSvZ2UfMX7PfszBUVFCmtkFVFbO6TPwFm7xxg_h7SedqScxh3vE3PyblQt6-LSgv2xFVZZSsM6QLMj8Z0RGW0SGhxD5LLxok8bGL7avE8YZ9xdHyMJW6w17-XRb3_N2zBujzdq8Hce9mB-JlzdMJzz5rNL5F22Lt9oWHdK2kTaOzFm82bQO__r_pvLzrSrjQ6ocki21srRR5a43sa03nfLVNEBK59R8KFhdmYSujU7q2MYc1EC1IyXrml3eGH213mok9ny5vETie5HC3Uh8GyncixTtRgq3kaK9SPFupGgbKd6LdL6vT9MAb3N9P8tSFLjW6OknlvWD_oCcWz8Aozt9X8OOH0pP363MLQV4JRd0SY5MkanMuixB4UxFq9VXfwUAAP__aLZg5A==

# Also works when creating an index.
statement ok
Expand Down Expand Up @@ -207,7 +207,7 @@ regions: <hidden>
│ actual row count: 2
│ filter: st_intersects('010100002026690000000000000C6A18410000008081844E41', geom)
└── • index join
└── • index join (streamer)
│ nodes: <hidden>
│ regions: <hidden>
│ actual row count: 2
Expand Down Expand Up @@ -245,4 +245,4 @@ regions: <hidden>
table: geo_table@geom_index
spans: 31 spans
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVuFu4kYQ_t-nGM2fJKqj7NoO5baqREO4lrY5IkBXnQpCG3tCLOxd3-7SEEU8Vl-gT1atHaLgHLSoV6k6_1iY2dnPM_N9o_Uj2o85Chz1ful1x7CAt8PBFcxJz5y8yQl-_bE37IF1s0w5MpYSZ4-PRsP-5Xdh6w1vf3s96L8bH8eMMRZB9cOikyMhfugNrnrj4YfAYxUnMBhe9oZw8QEWGKDSKb2TBVkUvyHHaYCl0QlZq413PVYB_XSFggWYqXLpvHsaYKINoXhEl7mcUODY5zgkmZI5YxhgSk5meQX7XELHJzDLVEorDLCr82WhrIBFnRkGOCqld5xN8GIyWd2mk8mKRX5hf7Pg6aFn-ARBqhQiBtrdkbEY4M_vwWUFCWB__vFkJ1o5Ui7T6tWW0fcWUkp0SqmAsHbePDiyYEimAngLLmrvfHjdhUTmuX0OLGVmNoExBnj1vtsF66iERC-Vg2NaubNMuRMBrGpoHUC02BVQyBUUVGjzADLPdSKdz4tVOdxIl9yRBb105dIJ8PFV_htHiNN1gLX1xLB1ck4o-AtJ9C9RsHXwz1XRV7-TcZS-zXJHhswZ35bGZr-3Kg1oBR0uwHoRgHXSOFGRGn1zPpkwTyrz3O1dEEilhx7zWnglhoFvS8fnWxVY0V2zV9vWyTzfFgWtKFm-1so-Yvye_ZiDo6KENLMLWFo5p8_AW9jgjR_C2086U0_DHO4Z5vrfrFzQw6cH-sudqP-OuKhBXHgIcc-DFm3TVvtF8_pgnHF_UYQsbLXesJdPt_U9b8e8Ntqszdtx3Iv5kXh5o3TCk886Kv-ibXGjbdEhbRtp48icxdtN6_Cv_29Tfd6oMj6kyiHZUitLW1XuehNrvOmUr6cBUjqn-sPA6qVJ6NropIqtzUEFVDlSsq7e5bXRV5st6wzJ4vkyeYnE9yKFu5F4EyncixTtRgqbSNFepHg3UtREivcine_r0zTA21zfz7IUBW5m9PQTy-ZBf0DOrRfA6E7fV7Djh9LTdytzSwFeyQVdkiNTZCqzLktQOLOk9fqrvwIAAP__GeZbQA==
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVuFu4kYQ_t-nGM2fJKqj7NoO5baqREO4lrY5IkBXnQpCG3tCLOxd3-66IYp4rL5An6xaO0SBHLSoJ7XnHwszO_t5Zr75tH5E-zFHgaPeL73uGBbwdji4gjnpmZM3OcGvP_aGPbBulilHxlLi7PHRaNi__C5sveHtb68H_Xfj45gxxiKof1h0ciTED73BVW88_BB4rOIEBsPL3hAuPsACA1Q6pXeyIIviN-Q4DbA0OiFrtfGuxzqgny5RsAAzVVbOu6cBJtoQikd0mcsJBY59jkOSKZkzhgGm5GSW17DPJXR8ArNMpbTEALs6rwplBSyazDDAUSm942yCF5PJ8jadTJYs8gv7mwVPDz3DJwhSpRAx0O6OjMUAf34PLitIAPvzjyc70cqRcplWr7aMvreQUqJTSgWEjfPmwZEFQzIVwFtw0Xjnw-suJDLP7XNgKTOzDowxwKv33S5YRyUkulIOjmnpzjLlTgSwuqFNANFiV0Ahl1BQoc0DyDzXiXQ-L1bncCNdckcWdOXKygnw8XX-a0eI01WAjfXEsHVyTij4i5HoX6Jgq-CfT0Vf_U7GUfo2yx0ZMmd8czTW-71laUAr6HAB1g8BWCeNEzWp0TfnkwnzpDLP3d4FgVR66DE_C6-GYeDb0vH51gXWdDfsNbZ1Ms83h4KWlFSvZ2UfMX7PfszBUVFCmtkFVFbO6TPwFm7xxg_h7SedqScxh3vE3PyblQt6-LSgv2xFVZZSsM6QLMj8Z0RGW0SGhxD5LLxok8bGL7avE8YZ9xdHyMJW6w17-XRb3_N2zBujzdq8Hce9mB-JlzdMJzz5rNL5F22Lt9oWHdK2kTaOzFm82bQO__r_pvLzrSrjQ6ocki21srRR5a43sa03nfLVNEBK59R8KFhdmYSujU7q2MYc1EC1IyXrml3eGH213mok9ny5vETie5HC3Uh8GyncixTtRgq3kaK9SPFupGgbKd6LdL6vT9MAb3N9P8tSFLjW6OknlvWD_oCcWz8Aozt9X8OOH0pP363MLQV4JRd0SY5MkanMuixB4UxFq9VXfwUAAP__aLZg5A==
12 changes: 6 additions & 6 deletions pkg/sql/opt/exec/execbuilder/testdata/lookup_join_limit
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ regions: <hidden>
│ regions: <hidden>
│ actual row count: 1
├── • index join
├── • index join (streamer)
│ │ nodes: <hidden>
│ │ regions: <hidden>
│ │ actual row count: 1
Expand Down Expand Up @@ -122,7 +122,7 @@ regions: <hidden>
│ table: a@a_y_idx
│ spans: [/1 - /1]
└── • index join
└── • index join (streamer)
│ nodes: <hidden>
│ regions: <hidden>
│ actual row count: 0
Expand Down Expand Up @@ -174,7 +174,7 @@ regions: <hidden>
│ regions: <hidden>
│ actual row count: 1
├── • index join
├── • index join (streamer)
│ │ nodes: <hidden>
│ │ regions: <hidden>
│ │ actual row count: 1
Expand All @@ -201,7 +201,7 @@ regions: <hidden>
│ table: a@a_y_idx
│ spans: [/1 - /1]
└── • index join
└── • index join (streamer)
│ nodes: <hidden>
│ regions: <hidden>
│ actual row count: 0
Expand Down Expand Up @@ -323,7 +323,7 @@ regions: <hidden>
• limit
│ count: 1
└── • lookup join
└── • lookup join (streamer)
│ nodes: <hidden>
│ regions: <hidden>
│ actual row count: 1
Expand Down Expand Up @@ -415,7 +415,7 @@ regions: <hidden>
• limit
│ count: 2
└── • lookup join
└── • lookup join (streamer)
│ nodes: <hidden>
│ regions: <hidden>
│ actual row count: 2
Expand Down
4 changes: 2 additions & 2 deletions pkg/sql/opt/exec/execbuilder/testdata/vectorize_local
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ maximum memory usage: <hidden>
network usage: <hidden>
regions: <hidden>
·
• lookup join
• lookup join (streamer)
│ nodes: <hidden>
│ regions: <hidden>
│ actual row count: 2
Expand Down Expand Up @@ -105,7 +105,7 @@ regions: <hidden>
table: c@sec
spans: FULL SCAN
·
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k9FqGzsQhu_PUwxzdQpKsruUUgQFUycFp7EdbJObYoIsTRzVWmkrabGN8WP1BfpkRbt2cOIktKXVxcLM_PvPaL7dDYZvBjmOL64uuhOQpwI-jYZ9kHA57A1AwXAA6nQGH0CezpChdYoGoqSA_AvmOGVYeScpBOdTatMIemqFPGOobVXHlJ4ylM4T8g1GHQ0hx4mYGRqRUOTPMmSoKAptGlvZCSSRYdeZurSBg2CQeo8rkaITZPj5BqIuiUP243toY-lsJBu1s0cl75YBFEmnSHEo2uRsHSmAJ6E45O_gY5udj667IIUx4UFYCe33wrfIsH_T7UKIVIF0tY3wP63imbbxDYesuUorIFq8JCjFCkoqnV-DMMZJEdNcWTPDTER5TwFcHas6ckj6Zv59osDplmEb7XYbopgT8vwARu8cebZlv87j0mm7w5E_xqE66rZa0BoZXjm3qCv46rQFZzl0ikNMidEwjdhJDk2zZvXtJts4RGHMEaA_Zpkfs3z_HMr8GGXxV1DSimR9POg_Ilw8IZz_DuERhcrZQI_ovtQpe9LpJN9OGZKaU_ubB1d7SdfeyUbbhsPGqEkoCrGt5m3Qs_tSiJ5E-fCBHjrlrzoVrzlNGd4Zt7zVCjlmu3PyzGN_ML0g5iGtaHzvlo3tZF2lC94JE4hhXyzonCL5UlsdopbIo69pu_3vZwAAAP__VJmn6w==
Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k9FqGzsQhu_PUwxzdQpKsruUUgQFUycFp0kcnJCbYoIsTRzVWmkrabGN8WP1BfpkRSs7OHES2tLqYmFm_v1nNN_uCsM3gxyvTs5O-tcgDwV8Gg3PQcLpcHABCoYXoA4n8AHk4QQZWqfoQtQUkH_BEscMG-8kheB8Sq06wUAtkBcMtW3amNJjhtJ5Qr7CqKMh5HgtJoZGJBT5owIZKopCm85W9gJJZNh3pq1t4CAYpN5XjUjRATL8fANR18Sh-PE95Fg6G8lG7exeybt5AEXSKVIcqpycLCMF8CQUh_IdfMzZ6eiyD1IYEx6EjdB-K3yLDM9v-n0IkRqQrrUR_qdFPNI2vuFQdFfJAqLZS4JaLKCm2vklCGOcFDHNVXQzTESU9xTAtbFpI4ek7-bfJiocrxnmaLPbEMWUkJc7MAbHyIs1-3Uep07bDY7yMQ7VU7fNjJbI8My5WdvAV6ctOMuhV-1iSoyGacRecuiadavPm8xxiMKYPUB_zLLcZ_n-OZTlPsrqr6BsAykI0ZOoySNDWpBs9wf_R8SrJ8TL3yE-otA4G-gR7Zc6FU86HZTrMUNSU8q_fXCtl3Tpney0ORx2Rl1CUYi5WuZgYLelvL2HD3bXqXzVqXrNaczwzrj5rVbIsdicg2ce24PpBTENaUVX927e2V4vm3TBO2ECMTwXMzqmSL7WVoeoJfLoW1qv__sZAAD__9uqrY8=

query T
EXPLAIN (OPT, VERBOSE) SELECT c.a FROM c INNER MERGE JOIN d ON c.a = d.b
Expand Down
10 changes: 9 additions & 1 deletion pkg/sql/opt/exec/explain/emit.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,15 @@ func makeEmitter(ob *OutputBuilder, spanFormatFn SpanFormatFn) emitter {
return emitter{ob: ob, spanFormatFn: spanFormatFn}
}

func (e *emitter) nodeName(n *Node) (string, error) {
func (e *emitter) nodeName(n *Node) (name string, _ error) {
defer func() {
if stats, ok := n.annotations[exec.ExecutionStatsID]; ok && !omitStats(n) {
if stats.(*exec.ExecutionStats).UsedStreamer {
name += " (streamer)"
}
}
}()

switch n.op {
case scanOp:
a := n.args.(*scanArgs)
Expand Down
1 change: 1 addition & 0 deletions pkg/sql/opt/exec/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,7 @@ type ExecutionStats struct {
KVPairsRead optional.Uint
KVRowsRead optional.Uint
KVBatchRequestsIssued optional.Uint
UsedStreamer bool

// Storage engine iterator statistics
//
Expand Down
1 change: 1 addition & 0 deletions pkg/sql/rowexec/joinreader.go
Original file line number Diff line number Diff line change
Expand Up @@ -1220,6 +1220,7 @@ func (jr *joinReader) execStatsForTrace() *execinfrapb.ComponentStats {
ContentionTime: optional.MakeTimeValue(jr.contentionEventsListener.CumulativeContentionTime),
BatchRequestsIssued: optional.MakeUint(uint64(jr.fetcher.GetBatchRequestsIssued())),
KVCPUTime: optional.MakeTimeValue(fis.kvCPUTime),
UsedStreamer: jr.usesStreamer,
},
Output: jr.OutputHelper.Stats(),
}
Expand Down
6 changes: 6 additions & 0 deletions scripts/release-notes.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ def lookup_person(name, email):
'performance improvement': "Performance improvements",
'bug fix': "Bug fixes",
'security update': "Security updates",
'cluster virtualization': "Cluster virtualization and multi-tenancy",
}

# Order in which to show the sections.
Expand All @@ -175,6 +176,7 @@ def lookup_person(name, email):
'enterprise change',
'sql change',
'ops change',
'cluster virtualization',
'cli change',
'ui change',
'bug fix',
Expand All @@ -197,6 +199,10 @@ def lookup_person(name, email):
'enterprise': 'enterprise change',
'security': 'security update',
'security change': 'security update',
'multi-tenant': 'cluster virtualization',
'multi tenant': 'cluster virtualization',
'multi tenancy': 'cluster virtualization',
'virtualization': 'cluster virtualization',
}

#
Expand Down

0 comments on commit f788417

Please sign in to comment.