Skip to content

Commit 614903c

Browse files
committed
distsql: Add SelectResultIter to read rows from cop-task in the iterator way
1 parent a1183bc commit 614903c

File tree

8 files changed

+835
-66
lines changed

8 files changed

+835
-66
lines changed

DEPS.bzl

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6114,13 +6114,13 @@ def go_deps():
61146114
name = "com_github_pingcap_tipb",
61156115
build_file_proto_mode = "disable_global",
61166116
importpath = "github.com/pingcap/tipb",
6117-
sha256 = "b18847e2b60ee85d4b78a89b0d6435cccabf97605bc942ffe53cc3c12f27caa9",
6118-
strip_prefix = "github.com/pingcap/[email protected]20250605054300-07d1c2a671ee",
6117+
sha256 = "3c15e8868bd3e7f53c9e3e3b9b9d6768467de348edfda500ddcf48d6ffa9329a",
6118+
strip_prefix = "github.com/pingcap/[email protected]20250829062436-85a019a5df23",
61196119
urls = [
6120-
"http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20250605054300-07d1c2a671ee.zip",
6121-
"http://ats.apps.svc/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20250605054300-07d1c2a671ee.zip",
6122-
"https://cache.hawkingrei.com/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20250605054300-07d1c2a671ee.zip",
6123-
"https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20250605054300-07d1c2a671ee.zip",
6120+
"http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20250829062436-85a019a5df23.zip",
6121+
"http://ats.apps.svc/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20250829062436-85a019a5df23.zip",
6122+
"https://cache.hawkingrei.com/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20250829062436-85a019a5df23.zip",
6123+
"https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/tipb/com_github_pingcap_tipb-v0.0.0-20250829062436-85a019a5df23.zip",
61246124
],
61256125
)
61266126
go_repository(
@@ -10419,13 +10419,13 @@ def go_deps():
1041910419
name = "org_golang_x_crypto",
1042010420
build_file_proto_mode = "disable_global",
1042110421
importpath = "golang.org/x/crypto",
10422-
sha256 = "6a55423d327359615db923c5f17e5f10c4c7d91c39ef8d0b7f6e0876f89ff9da",
10423-
strip_prefix = "golang.org/x/crypto@v0.40.0",
10422+
sha256 = "7da981b09d79d021f79ea2953637a85e3c72e43fc88b6a3230e7976fbbeec2de",
10423+
strip_prefix = "golang.org/x/crypto@v0.41.0",
1042410424
urls = [
10425-
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.40.0.zip",
10426-
"http://ats.apps.svc/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.40.0.zip",
10427-
"https://cache.hawkingrei.com/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.40.0.zip",
10428-
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.40.0.zip",
10425+
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.41.0.zip",
10426+
"http://ats.apps.svc/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.41.0.zip",
10427+
"https://cache.hawkingrei.com/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.41.0.zip",
10428+
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/crypto/org_golang_x_crypto-v0.41.0.zip",
1042910429
],
1043010430
)
1043110431
go_repository(
@@ -10497,13 +10497,13 @@ def go_deps():
1049710497
name = "org_golang_x_mod",
1049810498
build_file_proto_mode = "disable_global",
1049910499
importpath = "golang.org/x/mod",
10500-
sha256 = "559ae04b112e304086df0300cf0bee7ce21497c36c088c461d68891b55905605",
10501-
strip_prefix = "golang.org/x/mod@v0.26.0",
10500+
sha256 = "19fb241d46e4397d3193b5fa899e2a9d62bb5d1c41f73d09d29c17c3c0d3953c",
10501+
strip_prefix = "golang.org/x/mod@v0.27.0",
1050210502
urls = [
10503-
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/mod/org_golang_x_mod-v0.26.0.zip",
10504-
"http://ats.apps.svc/gomod/golang.org/x/mod/org_golang_x_mod-v0.26.0.zip",
10505-
"https://cache.hawkingrei.com/gomod/golang.org/x/mod/org_golang_x_mod-v0.26.0.zip",
10506-
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/mod/org_golang_x_mod-v0.26.0.zip",
10503+
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/mod/org_golang_x_mod-v0.27.0.zip",
10504+
"http://ats.apps.svc/gomod/golang.org/x/mod/org_golang_x_mod-v0.27.0.zip",
10505+
"https://cache.hawkingrei.com/gomod/golang.org/x/mod/org_golang_x_mod-v0.27.0.zip",
10506+
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/mod/org_golang_x_mod-v0.27.0.zip",
1050710507
],
1050810508
)
1050910509
go_repository(
@@ -10562,13 +10562,13 @@ def go_deps():
1056210562
name = "org_golang_x_sys",
1056310563
build_file_proto_mode = "disable_global",
1056410564
importpath = "golang.org/x/sys",
10565-
sha256 = "27d5489227865ffffc3fbbbaf6100952ca2925eba19cfdff01e6e76b986b4bb4",
10566-
strip_prefix = "golang.org/x/sys@v0.34.0",
10565+
sha256 = "dc3c20611168aaa8fda0d71999be1a5222a0ba57bc767c978a590e41ff2ede35",
10566+
strip_prefix = "golang.org/x/sys@v0.35.0",
1056710567
urls = [
10568-
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sys/org_golang_x_sys-v0.34.0.zip",
10569-
"http://ats.apps.svc/gomod/golang.org/x/sys/org_golang_x_sys-v0.34.0.zip",
10570-
"https://cache.hawkingrei.com/gomod/golang.org/x/sys/org_golang_x_sys-v0.34.0.zip",
10571-
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sys/org_golang_x_sys-v0.34.0.zip",
10568+
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/sys/org_golang_x_sys-v0.35.0.zip",
10569+
"http://ats.apps.svc/gomod/golang.org/x/sys/org_golang_x_sys-v0.35.0.zip",
10570+
"https://cache.hawkingrei.com/gomod/golang.org/x/sys/org_golang_x_sys-v0.35.0.zip",
10571+
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/sys/org_golang_x_sys-v0.35.0.zip",
1057210572
],
1057310573
)
1057410574
go_repository(
@@ -10588,26 +10588,26 @@ def go_deps():
1058810588
name = "org_golang_x_term",
1058910589
build_file_proto_mode = "disable_global",
1059010590
importpath = "golang.org/x/term",
10591-
sha256 = "6165d56707f7b1aef699f762a05eed017502c60ebd486e6a735265fc586d0f07",
10592-
strip_prefix = "golang.org/x/term@v0.33.0",
10591+
sha256 = "22281cbf30560433d57de8d72c1151f9cac2917795dc6e9f694f7a525bb5309c",
10592+
strip_prefix = "golang.org/x/term@v0.34.0",
1059310593
urls = [
10594-
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/term/org_golang_x_term-v0.33.0.zip",
10595-
"http://ats.apps.svc/gomod/golang.org/x/term/org_golang_x_term-v0.33.0.zip",
10596-
"https://cache.hawkingrei.com/gomod/golang.org/x/term/org_golang_x_term-v0.33.0.zip",
10597-
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/term/org_golang_x_term-v0.33.0.zip",
10594+
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/term/org_golang_x_term-v0.34.0.zip",
10595+
"http://ats.apps.svc/gomod/golang.org/x/term/org_golang_x_term-v0.34.0.zip",
10596+
"https://cache.hawkingrei.com/gomod/golang.org/x/term/org_golang_x_term-v0.34.0.zip",
10597+
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/term/org_golang_x_term-v0.34.0.zip",
1059810598
],
1059910599
)
1060010600
go_repository(
1060110601
name = "org_golang_x_text",
1060210602
build_file_proto_mode = "disable_global",
1060310603
importpath = "golang.org/x/text",
10604-
sha256 = "1230ce66d74ed4510f1578f25b4e53beee00926dc24c86fab7242637f8415ea8",
10605-
strip_prefix = "golang.org/x/text@v0.27.0",
10604+
sha256 = "46259e1416ae7ec6adf1867c5f9fab32af0476a148e3c95f1dfbb134f4acf48d",
10605+
strip_prefix = "golang.org/x/text@v0.28.0",
1060610606
urls = [
10607-
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/text/org_golang_x_text-v0.27.0.zip",
10608-
"http://ats.apps.svc/gomod/golang.org/x/text/org_golang_x_text-v0.27.0.zip",
10609-
"https://cache.hawkingrei.com/gomod/golang.org/x/text/org_golang_x_text-v0.27.0.zip",
10610-
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/text/org_golang_x_text-v0.27.0.zip",
10607+
"http://bazel-cache.pingcap.net:8080/gomod/golang.org/x/text/org_golang_x_text-v0.28.0.zip",
10608+
"http://ats.apps.svc/gomod/golang.org/x/text/org_golang_x_text-v0.28.0.zip",
10609+
"https://cache.hawkingrei.com/gomod/golang.org/x/text/org_golang_x_text-v0.28.0.zip",
10610+
"https://storage.googleapis.com/pingcapmirror/gomod/golang.org/x/text/org_golang_x_text-v0.28.0.zip",
1061110611
],
1061210612
)
1061310613
go_repository(

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ require (
9494
github.com/pingcap/log v1.1.1-0.20250514022801-14f3b4ca066e
9595
github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5
9696
github.com/pingcap/tidb/pkg/parser v0.0.0-20211011031125-9b13dc409c5e
97-
github.com/pingcap/tipb v0.0.0-20250605054300-07d1c2a671ee
97+
github.com/pingcap/tipb v0.0.0-20250829062436-85a019a5df23
9898
github.com/prometheus/client_golang v1.22.0
9999
github.com/prometheus/client_model v0.6.2
100100
github.com/prometheus/common v0.63.0
@@ -138,9 +138,9 @@ require (
138138
golang.org/x/net v0.42.0
139139
golang.org/x/oauth2 v0.30.0
140140
golang.org/x/sync v0.16.0
141-
golang.org/x/sys v0.34.0
142-
golang.org/x/term v0.33.0
143-
golang.org/x/text v0.27.0
141+
golang.org/x/sys v0.35.0
142+
golang.org/x/term v0.34.0
143+
golang.org/x/text v0.28.0
144144
golang.org/x/time v0.12.0
145145
golang.org/x/tools v0.35.0
146146
google.golang.org/api v0.170.0
@@ -310,9 +310,9 @@ require (
310310
go.opentelemetry.io/otel/sdk v1.24.0 // indirect
311311
go.opentelemetry.io/otel/trace v1.24.0 // indirect
312312
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
313-
golang.org/x/crypto v0.40.0 // indirect
313+
golang.org/x/crypto v0.41.0 // indirect
314314
golang.org/x/exp/typeparams v0.0.0-20250620022241-b7579e27df2b // indirect
315-
golang.org/x/mod v0.26.0 // indirect
315+
golang.org/x/mod v0.27.0 // indirect
316316
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
317317
google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda // indirect
318318
google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda // indirect

go.sum

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -694,8 +694,8 @@ github.com/pingcap/log v1.1.1-0.20250514022801-14f3b4ca066e h1:8AZZRv1Ox9FVGATVZ
694694
github.com/pingcap/log v1.1.1-0.20250514022801-14f3b4ca066e/go.mod h1:ORfBOFp1eteu2odzsyaxI+b8TzJwgjwyQcGhI+9SfEA=
695695
github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 h1:T4pXRhBflzDeAhmOQHNPRRogMYxP13V7BkYw3ZsoSfE=
696696
github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5/go.mod h1:rlimy0GcTvjiJqvD5mXTRr8O2eNZPBrcUgiWVYp9530=
697-
github.com/pingcap/tipb v0.0.0-20250605054300-07d1c2a671ee h1:r+nnSp37qkHtjRIqF65MH5BQ2aCHoeI1ybhaof8dqbw=
698-
github.com/pingcap/tipb v0.0.0-20250605054300-07d1c2a671ee/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4=
697+
github.com/pingcap/tipb v0.0.0-20250829062436-85a019a5df23 h1:z8JRfys9ezO0wCqdrl1+Su99FI8JQY16NT2bBk1bT+4=
698+
github.com/pingcap/tipb v0.0.0-20250829062436-85a019a5df23/go.mod h1:RM8iRcMalzOthG2XJxnNBniM4xFGb/lDwHUwqkaVzt4=
699699
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
700700
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
701701
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -993,8 +993,8 @@ golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0
993993
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
994994
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
995995
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
996-
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
997-
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
996+
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
997+
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
998998
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
999999
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
10001000
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1055,8 +1055,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
10551055
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
10561056
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
10571057
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
1058-
golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg=
1059-
golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ=
1058+
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
1059+
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
10601060
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
10611061
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
10621062
golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1194,8 +1194,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11941194
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11951195
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11961196
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1197-
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
1198-
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
1197+
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
1198+
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
11991199
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
12001200
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
12011201
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -1205,8 +1205,8 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
12051205
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
12061206
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
12071207
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
1208-
golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
1209-
golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
1208+
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
1209+
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
12101210
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
12111211
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
12121212
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1220,8 +1220,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
12201220
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
12211221
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
12221222
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
1223-
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
1224-
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
1223+
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
1224+
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
12251225
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
12261226
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
12271227
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

pkg/distsql/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ go_test(
6969
embed = [":distsql"],
7070
flaky = True,
7171
race = "on",
72-
shard_count = 29,
72+
shard_count = 32,
7373
deps = [
7474
"//pkg/distsql/context",
7575
"//pkg/errctx",

pkg/distsql/distsql_test.go

Lines changed: 108 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,9 @@ type mockResponse struct {
206206
total int
207207
batch int
208208
ctx sessionctx.Context
209+
// intermediateOutputs is used to mock the intermediate output from coprocessor.
210+
intermediateOutputs [][]*tipb.IntermediateOutput
211+
closed bool
209212
sync.Mutex
210213
}
211214

@@ -214,6 +217,7 @@ func (resp *mockResponse) Close() error {
214217
resp.Lock()
215218
defer resp.Unlock()
216219

220+
resp.closed = true
217221
resp.count = 0
218222
return nil
219223
}
@@ -223,10 +227,20 @@ func (resp *mockResponse) Next(context.Context) (kv.ResultSubset, error) {
223227
resp.Lock()
224228
defer resp.Unlock()
225229

226-
if resp.count >= resp.total {
230+
if resp.closed {
231+
panic("closed")
232+
}
233+
234+
var intermediateOutputs []*tipb.IntermediateOutput
235+
if len(resp.intermediateOutputs) > 0 {
236+
intermediateOutputs = resp.intermediateOutputs[0]
237+
resp.intermediateOutputs = resp.intermediateOutputs[1:]
238+
}
239+
240+
if resp.count >= resp.total && intermediateOutputs == nil {
227241
return nil, nil
228242
}
229-
numRows := min(resp.batch, resp.total-resp.count)
243+
numRows := max(0, min(resp.batch, resp.total-resp.count))
230244
resp.count += numRows
231245

232246
var chunks []tipb.Chunk
@@ -265,8 +279,9 @@ func (resp *mockResponse) Next(context.Context) (kv.ResultSubset, error) {
265279
}
266280

267281
respPB := &tipb.SelectResponse{
268-
Chunks: chunks,
269-
OutputCounts: []int64{1},
282+
Chunks: chunks,
283+
OutputCounts: []int64{1},
284+
IntermediateOutputs: intermediateOutputs,
270285
}
271286
if canUseChunkRPC(resp.ctx.GetDistSQLCtx()) {
272287
respPB.EncodeType = tipb.EncodeType_TypeChunk
@@ -280,6 +295,95 @@ func (resp *mockResponse) Next(context.Context) (kv.ResultSubset, error) {
280295
return &mockResultSubset{respBytes}, nil
281296
}
282297

298+
func mockChunk(loc *time.Location, encodeType tipb.EncodeType, colTypes []*types.FieldType, rows [][]any) tipb.Chunk {
299+
var chk *chunk.Chunk
300+
var dsRows [][]types.Datum
301+
switch encodeType {
302+
case tipb.EncodeType_TypeDefault:
303+
dsRows = make([][]types.Datum, 0, len(rows))
304+
case tipb.EncodeType_TypeChunk:
305+
chk = chunk.New(colTypes, len(rows), len(rows))
306+
default:
307+
panic("unsupported encode type: " + encodeType.String())
308+
}
309+
310+
for _, row := range rows {
311+
if len(row) != len(colTypes) {
312+
panic("row length not match column length")
313+
}
314+
var ds []types.Datum
315+
if dsRows != nil {
316+
ds = make([]types.Datum, len(row))
317+
}
318+
for i, val := range row {
319+
switch v := val.(type) {
320+
case int:
321+
if chk != nil {
322+
chk.AppendInt64(i, int64(v))
323+
} else {
324+
ds[i] = types.NewIntDatum(int64(v))
325+
}
326+
case int64:
327+
if chk != nil {
328+
chk.AppendInt64(i, v)
329+
} else {
330+
ds[i] = types.NewIntDatum(v)
331+
}
332+
case uint64:
333+
if chk != nil {
334+
chk.AppendUint64(i, v)
335+
} else {
336+
ds[i] = types.NewUintDatum(v)
337+
}
338+
case string:
339+
if chk != nil {
340+
chk.AppendString(i, v)
341+
} else {
342+
ds[i] = types.NewStringDatum(v)
343+
}
344+
case []byte:
345+
if chk != nil {
346+
chk.AppendBytes(i, v)
347+
} else {
348+
ds[i] = types.NewBytesDatum(v)
349+
}
350+
case time.Time:
351+
tm := types.NewTime(types.FromGoTime(v.In(loc)), mysql.TypeTimestamp, 0)
352+
if chk != nil {
353+
chk.AppendTime(i, tm)
354+
} else {
355+
ds[i] = types.NewTimeDatum(tm)
356+
}
357+
case nil:
358+
if chk != nil {
359+
chk.AppendNull(i)
360+
} else {
361+
ds[i] = types.Datum{}
362+
}
363+
default:
364+
panic("unsupported mock type")
365+
}
366+
}
367+
dsRows = append(dsRows, ds)
368+
}
369+
370+
if chk != nil {
371+
c := chunk.NewCodec(colTypes)
372+
buffer := c.Encode(chk)
373+
return tipb.Chunk{RowsData: buffer}
374+
}
375+
376+
var buffer []byte
377+
var err error
378+
for _, ds := range dsRows {
379+
buffer, err = codec.EncodeValue(loc, buffer, ds...)
380+
if err != nil {
381+
panic(err)
382+
}
383+
}
384+
return tipb.Chunk{RowsData: buffer}
385+
}
386+
283387
// mockResultSubset implements kv.ResultSubset interface.
284388
// Used only for test.
285389
type mockResultSubset struct{ data []byte }

0 commit comments

Comments
 (0)