diff --git a/.github/workflows/assign_milestone.yml b/.github/workflows/assign_milestone.yml
index 6687a239b57..e0c0b100a74 100644
--- a/.github/workflows/assign_milestone.yml
+++ b/.github/workflows/assign_milestone.yml
@@ -4,7 +4,9 @@ on:
pull_request_target:
types: [opened]
-permissions: read-all
+permissions:
+ pull-requests: write
+ contents: read
env:
GH_TOKEN: ${{ github.token }}
@@ -13,18 +15,24 @@ jobs:
build:
name: Assign Milestone
runs-on: ubuntu-24.04
- permissions:
- pull-requests: write
steps:
- name: Checkout code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
- - name: Set up Go
- uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
- go-version-file: go.mod
+ # We must explicitly checkout the base's SHA to avoid executing any code coming from
+ # the PR's SHA - Which would be executed in the base branch's context.
+ # This is really important to limit any sort of pwn requests.
+ ref: ${{ github.base_ref }}
+ persist-credentials: 'false'
- name: Assign Milestone
run: |
- gh pr edit ${{ github.event.number }} --milestone "v$(sed -n 's/.*versionName.*\"\([[:digit:]\.]*\).*\"/\1/p' ./go/vt/servenv/version.go)"
+ # Ensure the content we sed from version.go is sanitized and match the correct format
+ VERSION=$(sed -n 's/.*versionName.*\"\([[:digit:]\.]*\).*\"/\1/p' ./go/vt/servenv/version.go)
+ if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+ echo "Invalid version format: $VERSION"
+ exit 1
+ fi
+
+ gh pr edit ${{ github.event.number }} --milestone "v$VERSION"
diff --git a/.github/workflows/auto_approve_pr.yml b/.github/workflows/auto_approve_pr.yml
index e584337f78b..e76142c659f 100644
--- a/.github/workflows/auto_approve_pr.yml
+++ b/.github/workflows/auto_approve_pr.yml
@@ -16,7 +16,10 @@ jobs:
steps:
- name: Checkout code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
+
- name: Auto Approve Pull Request
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/check_make_vtadmin_authz_testgen.yml b/.github/workflows/check_make_vtadmin_authz_testgen.yml
index 26543c8a948..4008bacb163 100644
--- a/.github/workflows/check_make_vtadmin_authz_testgen.yml
+++ b/.github/workflows/check_make_vtadmin_authz_testgen.yml
@@ -27,7 +27,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
diff --git a/.github/workflows/check_make_vtadmin_web_proto.yml b/.github/workflows/check_make_vtadmin_web_proto.yml
index 1c1bf2cae4f..4df27f4d826 100644
--- a/.github/workflows/check_make_vtadmin_web_proto.yml
+++ b/.github/workflows/check_make_vtadmin_web_proto.yml
@@ -27,7 +27,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
diff --git a/.github/workflows/cluster_endtoend_12.yml b/.github/workflows/cluster_endtoend_12.yml
index 7c98855b783..e444858ff0d 100644
--- a/.github/workflows/cluster_endtoend_12.yml
+++ b/.github/workflows/cluster_endtoend_12.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (12)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_13.yml b/.github/workflows/cluster_endtoend_13.yml
index 947d393bbbb..8afefa03c99 100644
--- a/.github/workflows/cluster_endtoend_13.yml
+++ b/.github/workflows/cluster_endtoend_13.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (13)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_15.yml b/.github/workflows/cluster_endtoend_15.yml
index aedc1bbd691..dcccc6cc187 100644
--- a/.github/workflows/cluster_endtoend_15.yml
+++ b/.github/workflows/cluster_endtoend_15.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (15)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_18.yml b/.github/workflows/cluster_endtoend_18.yml
index 9886b617d51..347eb73f919 100644
--- a/.github/workflows/cluster_endtoend_18.yml
+++ b/.github/workflows/cluster_endtoend_18.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (18)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_21.yml b/.github/workflows/cluster_endtoend_21.yml
index e6bccee0004..f2b045e155d 100644
--- a/.github/workflows/cluster_endtoend_21.yml
+++ b/.github/workflows/cluster_endtoend_21.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (21)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_backup_pitr.yml b/.github/workflows/cluster_endtoend_backup_pitr.yml
index 1f744e85004..ae7485b874e 100644
--- a/.github/workflows/cluster_endtoend_backup_pitr.yml
+++ b/.github/workflows/cluster_endtoend_backup_pitr.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (backup_pitr)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_backup_pitr_mysqlshell.yml b/.github/workflows/cluster_endtoend_backup_pitr_mysqlshell.yml
index 6ed73f260df..1794eb893b9 100644
--- a/.github/workflows/cluster_endtoend_backup_pitr_mysqlshell.yml
+++ b/.github/workflows/cluster_endtoend_backup_pitr_mysqlshell.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (backup_pitr_mysqlshell)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_backup_pitr_xtrabackup.yml b/.github/workflows/cluster_endtoend_backup_pitr_xtrabackup.yml
index 9bb6a4b56f8..6d8f8808565 100644
--- a/.github/workflows/cluster_endtoend_backup_pitr_xtrabackup.yml
+++ b/.github/workflows/cluster_endtoend_backup_pitr_xtrabackup.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (backup_pitr_xtrabackup)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Setup Percona Server for MySQL 8.0
diff --git a/.github/workflows/cluster_endtoend_ers_prs_newfeatures_heavy.yml b/.github/workflows/cluster_endtoend_ers_prs_newfeatures_heavy.yml
index e859749ceca..ef256dd83af 100644
--- a/.github/workflows/cluster_endtoend_ers_prs_newfeatures_heavy.yml
+++ b/.github/workflows/cluster_endtoend_ers_prs_newfeatures_heavy.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (ers_prs_newfeatures_heavy)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_mysql80.yml b/.github/workflows/cluster_endtoend_mysql80.yml
index 653db141b7d..584620fbf0f 100644
--- a/.github/workflows/cluster_endtoend_mysql80.yml
+++ b/.github/workflows/cluster_endtoend_mysql80.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (mysql80)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_mysql_server_vault.yml b/.github/workflows/cluster_endtoend_mysql_server_vault.yml
index 9de4aacd499..6b5ecc45495 100644
--- a/.github/workflows/cluster_endtoend_mysql_server_vault.yml
+++ b/.github/workflows/cluster_endtoend_mysql_server_vault.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (mysql_server_vault)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_onlineddl_revert.yml b/.github/workflows/cluster_endtoend_onlineddl_revert.yml
index 54c85944190..cb0eb7919ac 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_revert.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_revert.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (onlineddl_revert)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -92,6 +96,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_onlineddl_scheduler.yml b/.github/workflows/cluster_endtoend_onlineddl_scheduler.yml
index 9e117ac0f04..da7b96b6578 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_scheduler.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_scheduler.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (onlineddl_scheduler)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -92,6 +96,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_onlineddl_vrepl.yml b/.github/workflows/cluster_endtoend_onlineddl_vrepl.yml
index ce0ba65f74f..1d857dc2df5 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_vrepl.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_vrepl.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (onlineddl_vrepl)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -92,6 +96,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress.yml b/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress.yml
index 57413f649e1..bb8ff9a4b1c 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (onlineddl_vrepl_stress)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -92,6 +96,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress_suite.yml b/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress_suite.yml
index e1f949df6f8..ea7782d6d2f 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress_suite.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_vrepl_stress_suite.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (onlineddl_vrepl_stress_suite)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -92,6 +96,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_onlineddl_vrepl_suite.yml b/.github/workflows/cluster_endtoend_onlineddl_vrepl_suite.yml
index 18090dd2430..2671a018541 100644
--- a/.github/workflows/cluster_endtoend_onlineddl_vrepl_suite.yml
+++ b/.github/workflows/cluster_endtoend_onlineddl_vrepl_suite.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (onlineddl_vrepl_suite)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -92,6 +96,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_schemadiff_vrepl.yml b/.github/workflows/cluster_endtoend_schemadiff_vrepl.yml
index 2053a75db4c..bdd8dac28a3 100644
--- a/.github/workflows/cluster_endtoend_schemadiff_vrepl.yml
+++ b/.github/workflows/cluster_endtoend_schemadiff_vrepl.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (schemadiff_vrepl)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -92,6 +96,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_tabletmanager_consul.yml b/.github/workflows/cluster_endtoend_tabletmanager_consul.yml
index 3e8ffce0ac5..5f445a40b46 100644
--- a/.github/workflows/cluster_endtoend_tabletmanager_consul.yml
+++ b/.github/workflows/cluster_endtoend_tabletmanager_consul.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (tabletmanager_consul)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_tabletmanager_tablegc.yml b/.github/workflows/cluster_endtoend_tabletmanager_tablegc.yml
index cc75ef22937..af87aec2cca 100644
--- a/.github/workflows/cluster_endtoend_tabletmanager_tablegc.yml
+++ b/.github/workflows/cluster_endtoend_tabletmanager_tablegc.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (tabletmanager_tablegc)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml b/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml
index 0837be5356e..03385c6d45d 100644
--- a/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml
+++ b/.github/workflows/cluster_endtoend_tabletmanager_throttler_topo.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (tabletmanager_throttler_topo)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_topo_connection_cache.yml b/.github/workflows/cluster_endtoend_topo_connection_cache.yml
index da6ee53ad53..1e27231dc74 100644
--- a/.github/workflows/cluster_endtoend_topo_connection_cache.yml
+++ b/.github/workflows/cluster_endtoend_topo_connection_cache.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (topo_connection_cache)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_across_db_versions.yml b/.github/workflows/cluster_endtoend_vreplication_across_db_versions.yml
index 6f502c94d32..f6ab80b04da 100644
--- a/.github/workflows/cluster_endtoend_vreplication_across_db_versions.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_across_db_versions.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_across_db_versions)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_basic.yml b/.github/workflows/cluster_endtoend_vreplication_basic.yml
index 120cf541305..9b21f46e054 100644
--- a/.github/workflows/cluster_endtoend_vreplication_basic.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_basic.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_basic)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_cellalias.yml b/.github/workflows/cluster_endtoend_vreplication_cellalias.yml
index 760912b4818..95cf9a15214 100644
--- a/.github/workflows/cluster_endtoend_vreplication_cellalias.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_cellalias.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_cellalias)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_copy_parallel.yml b/.github/workflows/cluster_endtoend_vreplication_copy_parallel.yml
index d944a253ce3..6cca449201d 100644
--- a/.github/workflows/cluster_endtoend_vreplication_copy_parallel.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_copy_parallel.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_copy_parallel)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_foreign_key_stress.yml b/.github/workflows/cluster_endtoend_vreplication_foreign_key_stress.yml
index 5bba7760d7e..2890abaef4c 100644
--- a/.github/workflows/cluster_endtoend_vreplication_foreign_key_stress.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_foreign_key_stress.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_foreign_key_stress)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_mariadb_to_mysql.yml b/.github/workflows/cluster_endtoend_vreplication_mariadb_to_mysql.yml
index 1184fe493ef..4cf82c81f4b 100644
--- a/.github/workflows/cluster_endtoend_vreplication_mariadb_to_mysql.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_mariadb_to_mysql.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_mariadb_to_mysql)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_migrate.yml b/.github/workflows/cluster_endtoend_vreplication_migrate.yml
index 009840800d2..d0667c30ba4 100644
--- a/.github/workflows/cluster_endtoend_vreplication_migrate.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_migrate.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_migrate)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_multi_tenant.yml b/.github/workflows/cluster_endtoend_vreplication_multi_tenant.yml
index 9a5935a8907..326591fe820 100644
--- a/.github/workflows/cluster_endtoend_vreplication_multi_tenant.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_multi_tenant.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_multi_tenant)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_partial_movetables_and_materialize.yml b/.github/workflows/cluster_endtoend_vreplication_partial_movetables_and_materialize.yml
index 0a10e37e6c4..0124cd03832 100644
--- a/.github/workflows/cluster_endtoend_vreplication_partial_movetables_and_materialize.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_partial_movetables_and_materialize.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_partial_movetables_and_materialize)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_v2.yml b/.github/workflows/cluster_endtoend_vreplication_v2.yml
index f023bf9718b..a8285f109a3 100644
--- a/.github/workflows/cluster_endtoend_vreplication_v2.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_v2.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_v2)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vreplication_vtctldclient_vdiff2_movetables_tz.yml b/.github/workflows/cluster_endtoend_vreplication_vtctldclient_vdiff2_movetables_tz.yml
index 7d96ac60306..0b599116e4c 100644
--- a/.github/workflows/cluster_endtoend_vreplication_vtctldclient_vdiff2_movetables_tz.yml
+++ b/.github/workflows/cluster_endtoend_vreplication_vtctldclient_vdiff2_movetables_tz.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vreplication_vtctldclient_vdiff2_movetables_tz)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vstream.yml b/.github/workflows/cluster_endtoend_vstream.yml
index acfefb40758..c6a6bbb515f 100644
--- a/.github/workflows/cluster_endtoend_vstream.yml
+++ b/.github/workflows/cluster_endtoend_vstream.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vstream)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtbackup.yml b/.github/workflows/cluster_endtoend_vtbackup.yml
index 947598bc307..38ff7e41cbc 100644
--- a/.github/workflows/cluster_endtoend_vtbackup.yml
+++ b/.github/workflows/cluster_endtoend_vtbackup.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtbackup)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtctlbackup_sharded_clustertest_heavy.yml b/.github/workflows/cluster_endtoend_vtctlbackup_sharded_clustertest_heavy.yml
index c6f8712a35a..6ce9887700c 100644
--- a/.github/workflows/cluster_endtoend_vtctlbackup_sharded_clustertest_heavy.yml
+++ b/.github/workflows/cluster_endtoend_vtctlbackup_sharded_clustertest_heavy.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtctlbackup_sharded_clustertest_heavy)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_concurrentdml.yml b/.github/workflows/cluster_endtoend_vtgate_concurrentdml.yml
index 2cd81fe04ef..840e4c496b9 100644
--- a/.github/workflows/cluster_endtoend_vtgate_concurrentdml.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_concurrentdml.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_concurrentdml)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_foreignkey_stress.yml b/.github/workflows/cluster_endtoend_vtgate_foreignkey_stress.yml
index 19620d9e3a2..39f03784840 100644
--- a/.github/workflows/cluster_endtoend_vtgate_foreignkey_stress.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_foreignkey_stress.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_foreignkey_stress)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_gen4.yml b/.github/workflows/cluster_endtoend_vtgate_gen4.yml
index 06961af4ee7..f62a830ea73 100644
--- a/.github/workflows/cluster_endtoend_vtgate_gen4.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_gen4.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_gen4)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_general_heavy.yml b/.github/workflows/cluster_endtoend_vtgate_general_heavy.yml
index e0b21df421a..59db477d840 100644
--- a/.github/workflows/cluster_endtoend_vtgate_general_heavy.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_general_heavy.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_general_heavy)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_godriver.yml b/.github/workflows/cluster_endtoend_vtgate_godriver.yml
index 23c9da550c2..b0a32a13b6f 100644
--- a/.github/workflows/cluster_endtoend_vtgate_godriver.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_godriver.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_godriver)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_partial_keyspace.yml b/.github/workflows/cluster_endtoend_vtgate_partial_keyspace.yml
index f5d1850aca3..bca24b0a3bc 100644
--- a/.github/workflows/cluster_endtoend_vtgate_partial_keyspace.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_partial_keyspace.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_partial_keyspace)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_plantests.yml b/.github/workflows/cluster_endtoend_vtgate_plantests.yml
index 93ed6a55f05..9c2c905564d 100644
--- a/.github/workflows/cluster_endtoend_vtgate_plantests.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_plantests.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_plantests)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_queries.yml b/.github/workflows/cluster_endtoend_vtgate_queries.yml
index 80462086a57..abd4ca2d713 100644
--- a/.github/workflows/cluster_endtoend_vtgate_queries.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_queries.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_queries)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_readafterwrite.yml b/.github/workflows/cluster_endtoend_vtgate_readafterwrite.yml
index 686db1e12ab..a6f24c0f983 100644
--- a/.github/workflows/cluster_endtoend_vtgate_readafterwrite.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_readafterwrite.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_readafterwrite)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_reservedconn.yml b/.github/workflows/cluster_endtoend_vtgate_reservedconn.yml
index 0f4ae20b0a7..72e7405e537 100644
--- a/.github/workflows/cluster_endtoend_vtgate_reservedconn.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_reservedconn.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_reservedconn)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_schema.yml b/.github/workflows/cluster_endtoend_vtgate_schema.yml
index 2dca36298e1..c954ac7d455 100644
--- a/.github/workflows/cluster_endtoend_vtgate_schema.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_schema.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_schema)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_schema_tracker.yml b/.github/workflows/cluster_endtoend_vtgate_schema_tracker.yml
index 711f38253cb..fa57ba09a30 100644
--- a/.github/workflows/cluster_endtoend_vtgate_schema_tracker.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_schema_tracker.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_schema_tracker)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_tablet_healthcheck_cache.yml b/.github/workflows/cluster_endtoend_vtgate_tablet_healthcheck_cache.yml
index 55996d7fa86..520a5a72ca7 100644
--- a/.github/workflows/cluster_endtoend_vtgate_tablet_healthcheck_cache.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_tablet_healthcheck_cache.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_tablet_healthcheck_cache)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_topo.yml b/.github/workflows/cluster_endtoend_vtgate_topo.yml
index f47e0a8dd63..c8151df7b79 100644
--- a/.github/workflows/cluster_endtoend_vtgate_topo.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_topo.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_topo)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_topo_consul.yml b/.github/workflows/cluster_endtoend_vtgate_topo_consul.yml
index 1b62ac79041..ebde8c3d0d9 100644
--- a/.github/workflows/cluster_endtoend_vtgate_topo_consul.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_topo_consul.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_topo_consul)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_topo_etcd.yml b/.github/workflows/cluster_endtoend_vtgate_topo_etcd.yml
index f88d3b9af3a..a3e11cb8eb9 100644
--- a/.github/workflows/cluster_endtoend_vtgate_topo_etcd.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_topo_etcd.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_topo_etcd)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_transaction.yml b/.github/workflows/cluster_endtoend_vtgate_transaction.yml
index 9ae7b465695..1014508be2a 100644
--- a/.github/workflows/cluster_endtoend_vtgate_transaction.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_transaction.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_transaction)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_unsharded.yml b/.github/workflows/cluster_endtoend_vtgate_unsharded.yml
index d348606dc31..fa922f575e6 100644
--- a/.github/workflows/cluster_endtoend_vtgate_unsharded.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_unsharded.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_unsharded)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_vindex_heavy.yml b/.github/workflows/cluster_endtoend_vtgate_vindex_heavy.yml
index 16bdee60217..36c75f52d05 100644
--- a/.github/workflows/cluster_endtoend_vtgate_vindex_heavy.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_vindex_heavy.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_vindex_heavy)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtgate_vschema.yml b/.github/workflows/cluster_endtoend_vtgate_vschema.yml
index fb176119769..d0dd3c7c917 100644
--- a/.github/workflows/cluster_endtoend_vtgate_vschema.yml
+++ b/.github/workflows/cluster_endtoend_vtgate_vschema.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtgate_vschema)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vtorc.yml b/.github/workflows/cluster_endtoend_vtorc.yml
index 92c2ea3d5d7..dbaa4b04143 100644
--- a/.github/workflows/cluster_endtoend_vtorc.yml
+++ b/.github/workflows/cluster_endtoend_vtorc.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vtorc)
runs-on: ubuntu-24.04
@@ -54,7 +55,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -64,6 +67,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -100,6 +104,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_vttablet_prscomplex.yml b/.github/workflows/cluster_endtoend_vttablet_prscomplex.yml
index 9868c382a69..ea1b662e1be 100644
--- a/.github/workflows/cluster_endtoend_vttablet_prscomplex.yml
+++ b/.github/workflows/cluster_endtoend_vttablet_prscomplex.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (vttablet_prscomplex)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Get key to latest MySQL repo
diff --git a/.github/workflows/cluster_endtoend_xb_backup.yml b/.github/workflows/cluster_endtoend_xb_backup.yml
index 26dbfea2def..8ae98fc9ffd 100644
--- a/.github/workflows/cluster_endtoend_xb_backup.yml
+++ b/.github/workflows/cluster_endtoend_xb_backup.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (xb_backup)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Setup Percona Server for MySQL 8.0
diff --git a/.github/workflows/cluster_endtoend_xb_recovery.yml b/.github/workflows/cluster_endtoend_xb_recovery.yml
index 43360690d6b..d617e99dcb9 100644
--- a/.github/workflows/cluster_endtoend_xb_recovery.yml
+++ b/.github/workflows/cluster_endtoend_xb_recovery.yml
@@ -15,6 +15,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on Cluster (xb_recovery)
runs-on: ubuntu-24.04
@@ -45,7 +46,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -91,6 +95,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
# Setup Percona Server for MySQL 8.0
diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index c971466b998..35517c4f6c5 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -13,7 +13,9 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in files relevant to code coverage
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
diff --git a/.github/workflows/codeql_analysis.yml b/.github/workflows/codeql_analysis.yml
index c523e34c697..864a29898fe 100644
--- a/.github/workflows/codeql_analysis.yml
+++ b/.github/workflows/codeql_analysis.yml
@@ -27,7 +27,9 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Set up Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
@@ -47,6 +49,7 @@ jobs:
# queries: security-extended,security-and-quality
- name: Get base dependencies
+ timeout-minutes: 10
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
# Uninstall any previously installed MySQL first
diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml
index 424cc5bfe15..1d88b034164 100644
--- a/.github/workflows/create_release.yml
+++ b/.github/workflows/create_release.yml
@@ -7,22 +7,25 @@ on:
release:
types: [created]
-permissions: read-all
+permissions:
+ contents: write
+ actions: read
jobs:
build:
name: Create Release
runs-on: ubuntu-24.04
- permissions:
- contents: write
steps:
- name: Check out code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Set up Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version-file: go.mod
+ cache: 'false'
- name: Tune the OS
run: |
@@ -33,14 +36,36 @@ jobs:
sudo apt-get update
sudo apt-get install -y make ruby ruby-dev
go mod download
- sudo gem install fpm
+
+ # We use fpm to package our artifacts, we want to pin the version we use and
+ # ensure the checksum of the package matches the one published on the package's webpage.
+ # https://rubygems.org/gems/fpm/versions
+ - name: Get fpm
+ run: |
+ FPM_VERSION=1.16.0
+ gem fetch fpm -v $FPM_VERSION
+
+ # Reviewers: The expected checksum MUST ALWAYS match the one published on this website:
+ # https://rubygems.org/gems/fpm/versions
+ EXPECTED_CHECKSUM="d9eafe613cfbdf9d3b8ef2e321e194cd0a2d300ce37f716c0be1b3a42b7db5df"
+
+ GOT_CHECKSUM=$(sha256sum fpm-$FPM_VERSION.gem | awk '{print $1}')
+
+ if [[ "$GOT_CHECKSUM" != "$EXPECTED_CHECKSUM" ]]; then
+ echo "Checksum validation failed"
+ echo "Expected: $EXPECTED_CHECKSUM"
+ echo "Got: $GOT_CHECKSUM"
+ exit 1
+ fi
+
+ sudo gem install fpm-$FPM_VERSION.gem
- name: Make Packages
run: |
./tools/make-release-packages.sh
- name: Upload Files
- uses: csexton/release-asset-action@master
+ uses: csexton/release-asset-action@3567794e918fa3068116688122a76cdeb57b5f09 # v3.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
pattern: "releases/*.{tar.gz,rpm,deb}"
diff --git a/.github/workflows/docker_build_images.yml b/.github/workflows/docker_build_images.yml
index 2024d677205..fea9f83b5d3 100644
--- a/.github/workflows/docker_build_images.yml
+++ b/.github/workflows/docker_build_images.yml
@@ -26,7 +26,9 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Login to Docker Hub
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
@@ -40,7 +42,7 @@ jobs:
- name: Build and push on main
if: startsWith(github.ref, 'refs/tags/') == false
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
+ uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0
with:
context: .
file: ${{ env.DOCKERFILE }}
@@ -61,7 +63,7 @@ jobs:
- name: Build and push on tags
if: startsWith(github.ref, 'refs/tags/')
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
+ uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0
with:
context: .
file: ${{ env.DOCKERFILE }}
@@ -80,7 +82,9 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Login to Docker Hub
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
@@ -98,7 +102,7 @@ jobs:
- name: Build and push on main
if: startsWith(github.ref, 'refs/tags/') == false
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
+ uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0
with:
context: .
file: ${{ env.DOCKERFILE }}
@@ -123,7 +127,7 @@ jobs:
- name: Build and push on tags
if: startsWith(github.ref, 'refs/tags/')
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
+ uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0
with:
context: .
file: ${{ env.DOCKERFILE }}
@@ -145,7 +149,9 @@ jobs:
steps:
- name: Check out code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Login to Docker Hub
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
@@ -159,7 +165,7 @@ jobs:
- name: Build and push on main latest tag
if: startsWith(github.ref, 'refs/tags/') == false && matrix.debian == 'bookworm'
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
+ uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0
with:
context: ${{ env.DOCKER_CTX }}
push: true
@@ -170,7 +176,7 @@ jobs:
- name: Build and push on main debian specific tag
if: startsWith(github.ref, 'refs/tags/') == false
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
+ uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0
with:
context: ${{ env.DOCKER_CTX }}
push: true
@@ -202,7 +208,7 @@ jobs:
# Build and Push component image to DOCKER_TAG, applies to both debian version
- name: Build and push on tags using Debian extension
if: startsWith(github.ref, 'refs/tags/')
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
+ uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0
with:
context: ${{ env.DOCKER_CTX }}
push: true
@@ -215,7 +221,7 @@ jobs:
# It is fine to build a second time here when "matrix.debian == 'bookworm'" as we have cached the first build already
- name: Build and push on tags without Debian extension
if: startsWith(github.ref, 'refs/tags/') && matrix.debian == 'bookworm'
- uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
+ uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0
with:
context: ${{ env.DOCKER_CTX }}
push: true
diff --git a/.github/workflows/docker_test_cluster_25.yml b/.github/workflows/docker_test_cluster.yml
similarity index 85%
rename from .github/workflows/docker_test_cluster_25.yml
rename to .github/workflows/docker_test_cluster.yml
index 34463ce3830..6c6310a9efc 100644
--- a/.github/workflows/docker_test_cluster_25.yml
+++ b/.github/workflows/docker_test_cluster.yml
@@ -1,10 +1,10 @@
-name: docker_test_cluster_25
+name: docker_test_cluster
on: [push, pull_request]
permissions: read-all
jobs:
build:
- name: Docker Test Cluster 25
+ name: Docker Test Cluster
runs-on: ubuntu-24.04
steps:
@@ -27,7 +27,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -37,6 +39,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'test.go'
- 'Makefile'
@@ -48,7 +51,7 @@ jobs:
- 'config/**'
- 'bootstrap.sh'
- 'docker/**'
- - '.github/workflows/docker_test_cluster_25.yml'
+ - '.github/workflows/docker_test_cluster.yml'
- name: Set up Go
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -64,4 +67,4 @@ jobs:
- name: Run tests which require docker - 2
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
- go run test.go -docker=true --follow -shard 25
+ go run test.go -docker=true --follow -shard docker_cluster
diff --git a/.github/workflows/e2e_race.yml b/.github/workflows/e2e_race.yml
index 50e1e4b9485..abd7355f078 100644
--- a/.github/workflows/e2e_race.yml
+++ b/.github/workflows/e2e_race.yml
@@ -26,7 +26,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
diff --git a/.github/workflows/endtoend.yml b/.github/workflows/endtoend.yml
index f061e8bee68..71b84f7acdc 100644
--- a/.github/workflows/endtoend.yml
+++ b/.github/workflows/endtoend.yml
@@ -26,7 +26,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
diff --git a/.github/workflows/docker_test_cluster_10.yml b/.github/workflows/java_docker_test.yml
similarity index 85%
rename from .github/workflows/docker_test_cluster_10.yml
rename to .github/workflows/java_docker_test.yml
index 10a7c1551c0..adb87922dfc 100644
--- a/.github/workflows/docker_test_cluster_10.yml
+++ b/.github/workflows/java_docker_test.yml
@@ -1,10 +1,10 @@
-name: docker_test_cluster_10
+name: java_docker_test
on: [push, pull_request]
permissions: read-all
jobs:
build:
- name: Docker Test Cluster 10
+ name: Java Docker Test
runs-on: ubuntu-24.04
steps:
@@ -27,7 +27,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -37,6 +39,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'test.go'
- 'Makefile'
@@ -48,7 +51,8 @@ jobs:
- 'config/**'
- 'bootstrap.sh'
- 'docker/**'
- - '.github/workflows/docker_test_cluster_10.yml'
+ - 'java/**'
+ - '.github/workflows/java_docker_test.yml'
- name: Set up Go
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -65,4 +69,4 @@ jobs:
- name: Run tests which require docker - 1
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
- go run test.go -docker=true --follow -shard 10
+ go run test.go -docker=true --follow -shard java
diff --git a/.github/workflows/local_example.yml b/.github/workflows/local_example.yml
index fc9724aa6ac..ef3569bfb86 100644
--- a/.github/workflows/local_example.yml
+++ b/.github/workflows/local_example.yml
@@ -30,7 +30,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -40,6 +42,7 @@ jobs:
token: ''
filters: |
examples:
+ - 'test/config.json'
- 'go/**/*.go'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/region_example.yml b/.github/workflows/region_example.yml
index c17f43eec11..ed190884446 100644
--- a/.github/workflows/region_example.yml
+++ b/.github/workflows/region_example.yml
@@ -30,7 +30,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -40,6 +42,7 @@ jobs:
token: ''
filters: |
examples:
+ - 'test/config.json'
- 'go/**/*.go'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/static_checks_etc.yml b/.github/workflows/static_checks_etc.yml
index cd2cce93827..2773d602ec9 100644
--- a/.github/workflows/static_checks_etc.yml
+++ b/.github/workflows/static_checks_etc.yml
@@ -31,7 +31,9 @@ jobs:
- name: Checkout code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Run FOSSA scan and upload build data
uses: fossa-contrib/fossa-action@v3
diff --git a/.github/workflows/unit_race.yml b/.github/workflows/unit_race.yml
index 8ffb74bd2cb..77f47a6c083 100644
--- a/.github/workflows/unit_race.yml
+++ b/.github/workflows/unit_race.yml
@@ -43,7 +43,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -53,6 +55,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/unit_race_evalengine.yml b/.github/workflows/unit_race_evalengine.yml
index d6d248f066e..9654209f2a9 100644
--- a/.github/workflows/unit_race_evalengine.yml
+++ b/.github/workflows/unit_race_evalengine.yml
@@ -43,7 +43,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -53,6 +55,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/unit_test_evalengine_mysql57.yml b/.github/workflows/unit_test_evalengine_mysql57.yml
index d55b2732c86..eea3a5aad57 100644
--- a/.github/workflows/unit_test_evalengine_mysql57.yml
+++ b/.github/workflows/unit_test_evalengine_mysql57.yml
@@ -45,7 +45,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +57,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/unit_test_evalengine_mysql80.yml b/.github/workflows/unit_test_evalengine_mysql80.yml
index 96af579742e..f48e224808d 100644
--- a/.github/workflows/unit_test_evalengine_mysql80.yml
+++ b/.github/workflows/unit_test_evalengine_mysql80.yml
@@ -45,7 +45,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +57,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/unit_test_evalengine_mysql84.yml b/.github/workflows/unit_test_evalengine_mysql84.yml
index efbe2b0eb9f..6b373d96812 100644
--- a/.github/workflows/unit_test_evalengine_mysql84.yml
+++ b/.github/workflows/unit_test_evalengine_mysql84.yml
@@ -45,7 +45,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +57,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/unit_test_mysql57.yml b/.github/workflows/unit_test_mysql57.yml
index eed08e9ce4c..3644170ebdc 100644
--- a/.github/workflows/unit_test_mysql57.yml
+++ b/.github/workflows/unit_test_mysql57.yml
@@ -45,7 +45,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +57,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/unit_test_mysql80.yml b/.github/workflows/unit_test_mysql80.yml
index 9e0ed7e6977..18bfa546124 100644
--- a/.github/workflows/unit_test_mysql80.yml
+++ b/.github/workflows/unit_test_mysql80.yml
@@ -45,7 +45,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +57,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/unit_test_mysql84.yml b/.github/workflows/unit_test_mysql84.yml
index 5948eb0836a..10b3c2b8a6c 100644
--- a/.github/workflows/unit_test_mysql84.yml
+++ b/.github/workflows/unit_test_mysql84.yml
@@ -45,7 +45,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +57,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/.github/workflows/update_golang_dependencies.yml b/.github/workflows/update_golang_dependencies.yml
index 33c5157097c..e2a3e7bd847 100644
--- a/.github/workflows/update_golang_dependencies.yml
+++ b/.github/workflows/update_golang_dependencies.yml
@@ -22,9 +22,10 @@ jobs:
go-version-file: go.mod
- name: Check out code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: main
+ persist-credentials: 'false'
- name: Upgrade the Golang Dependencies
id: detect-and-update
diff --git a/.github/workflows/update_golang_version.yml b/.github/workflows/update_golang_version.yml
index ad5dceeafa5..1948caf4b82 100644
--- a/.github/workflows/update_golang_version.yml
+++ b/.github/workflows/update_golang_version.yml
@@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Check out code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ matrix.branch }}
diff --git a/.github/workflows/upgrade_downgrade_test_backups_e2e.yml b/.github/workflows/upgrade_downgrade_test_backups_e2e.yml
index 0c558b00684..7e50c186a41 100644
--- a/.github/workflows/upgrade_downgrade_test_backups_e2e.yml
+++ b/.github/workflows/upgrade_downgrade_test_backups_e2e.yml
@@ -35,9 +35,10 @@ jobs:
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +56,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -84,6 +86,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo apt-get update
@@ -107,9 +110,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Check out other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -129,7 +133,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_backups_e2e_next_release.yml b/.github/workflows/upgrade_downgrade_test_backups_e2e_next_release.yml
index 7ee6c2db799..6586cca7a13 100644
--- a/.github/workflows/upgrade_downgrade_test_backups_e2e_next_release.yml
+++ b/.github/workflows/upgrade_downgrade_test_backups_e2e_next_release.yml
@@ -25,9 +25,10 @@ jobs:
fi
- name: Check out commit's code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-next-release-ref
@@ -57,6 +58,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -86,6 +88,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo apt-get update
@@ -109,9 +112,10 @@ jobs:
# Checkout to the next release of Vitess
- name: Check out other version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the next release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -131,7 +135,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_backups_manual.yml b/.github/workflows/upgrade_downgrade_test_backups_manual.yml
index 680b0da87e0..206a09e97bb 100644
--- a/.github/workflows/upgrade_downgrade_test_backups_manual.yml
+++ b/.github/workflows/upgrade_downgrade_test_backups_manual.yml
@@ -38,9 +38,10 @@ jobs:
# Checkout to this build's commit
- name: Checkout to commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-previous-release-ref
@@ -58,6 +59,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -88,6 +90,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -129,9 +132,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Checkout to the other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -151,7 +155,9 @@ jobs:
# Checkout to this build's commit
- name: Checkout to commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_backups_manual_next_release.yml b/.github/workflows/upgrade_downgrade_test_backups_manual_next_release.yml
index 768268271a1..96715bbe9de 100644
--- a/.github/workflows/upgrade_downgrade_test_backups_manual_next_release.yml
+++ b/.github/workflows/upgrade_downgrade_test_backups_manual_next_release.yml
@@ -27,9 +27,10 @@ jobs:
# Checkout to this build's commit
- name: Checkout to commit's code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-next-release-ref
@@ -59,6 +60,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -89,6 +91,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -130,9 +133,10 @@ jobs:
# Checkout to the next release of Vitess
- name: Checkout to the other version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the next release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -152,7 +156,9 @@ jobs:
# Checkout to this build's commit
- name: Checkout to commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_onlineddl_flow.yml b/.github/workflows/upgrade_downgrade_test_onlineddl_flow.yml
index dd389663a35..028150e54fd 100644
--- a/.github/workflows/upgrade_downgrade_test_onlineddl_flow.yml
+++ b/.github/workflows/upgrade_downgrade_test_onlineddl_flow.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Online DDL flow
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -38,9 +39,10 @@ jobs:
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -50,6 +52,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -95,6 +98,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -127,9 +131,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Check out last version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -150,9 +155,10 @@ jobs:
# Checkout to the next release of Vitess
- name: Check out next version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the next release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -173,7 +179,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_query_serving_queries.yml b/.github/workflows/upgrade_downgrade_test_query_serving_queries.yml
index e4ccc793933..aeb96066908 100644
--- a/.github/workflows/upgrade_downgrade_test_query_serving_queries.yml
+++ b/.github/workflows/upgrade_downgrade_test_query_serving_queries.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Query Serving (Queries)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -38,9 +39,10 @@ jobs:
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-previous-release-ref
@@ -58,6 +60,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -87,6 +90,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -135,9 +139,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Check out other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_query_serving_queries_2.yml b/.github/workflows/upgrade_downgrade_test_query_serving_queries_2.yml
index 87a78d0b659..df09ceb720a 100644
--- a/.github/workflows/upgrade_downgrade_test_query_serving_queries_2.yml
+++ b/.github/workflows/upgrade_downgrade_test_query_serving_queries_2.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Query Serving (Queries - 2)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -38,9 +39,10 @@ jobs:
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-previous-release-ref
@@ -58,6 +60,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -87,6 +90,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -135,9 +139,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Check out other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_query_serving_queries_2_next_release.yml b/.github/workflows/upgrade_downgrade_test_query_serving_queries_2_next_release.yml
index d3cfc662b5b..32a00022737 100644
--- a/.github/workflows/upgrade_downgrade_test_query_serving_queries_2_next_release.yml
+++ b/.github/workflows/upgrade_downgrade_test_query_serving_queries_2_next_release.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Query Serving (Queries - 2) Next Release
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -27,9 +28,10 @@ jobs:
fi
- name: Check out commit's code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-next-release-ref
@@ -59,6 +61,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -88,6 +91,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -120,9 +124,10 @@ jobs:
# Checkout to the next release of Vitess
- name: Check out other version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the next release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -142,7 +147,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_query_serving_queries_next_release.yml b/.github/workflows/upgrade_downgrade_test_query_serving_queries_next_release.yml
index c65fff08c52..faea680e0a8 100644
--- a/.github/workflows/upgrade_downgrade_test_query_serving_queries_next_release.yml
+++ b/.github/workflows/upgrade_downgrade_test_query_serving_queries_next_release.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Query Serving (Queries) Next Release
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -27,9 +28,10 @@ jobs:
fi
- name: Check out commit's code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-next-release-ref
@@ -59,6 +61,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -88,6 +91,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -120,9 +124,10 @@ jobs:
# Checkout to the next release of Vitess
- name: Check out other version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the next release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -142,7 +147,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_query_serving_schema.yml b/.github/workflows/upgrade_downgrade_test_query_serving_schema.yml
index 5616c247888..87a155df5e9 100644
--- a/.github/workflows/upgrade_downgrade_test_query_serving_schema.yml
+++ b/.github/workflows/upgrade_downgrade_test_query_serving_schema.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Query Serving (Schema)
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -38,9 +39,10 @@ jobs:
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-previous-release-ref
@@ -58,6 +60,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -87,6 +90,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -119,9 +123,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Check out other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -141,7 +146,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_query_serving_schema_next_release.yml b/.github/workflows/upgrade_downgrade_test_query_serving_schema_next_release.yml
index 6157079db6f..2450547966e 100644
--- a/.github/workflows/upgrade_downgrade_test_query_serving_schema_next_release.yml
+++ b/.github/workflows/upgrade_downgrade_test_query_serving_schema_next_release.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Query Serving (Schema) Next Release
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -27,9 +28,10 @@ jobs:
fi
- name: Check out commit's code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-next-release-ref
@@ -59,6 +61,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -88,6 +91,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -120,9 +124,10 @@ jobs:
# Checkout to the next release of Vitess
- name: Check out other version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the next release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -142,7 +147,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_reparent_new_vtctl.yml b/.github/workflows/upgrade_downgrade_test_reparent_new_vtctl.yml
index 931d9174c31..d25a772e423 100644
--- a/.github/workflows/upgrade_downgrade_test_reparent_new_vtctl.yml
+++ b/.github/workflows/upgrade_downgrade_test_reparent_new_vtctl.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Reparent New Vtctl
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -27,9 +28,10 @@ jobs:
fi
- name: Check out commit's code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-next-release-ref
@@ -59,6 +61,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -88,6 +91,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -120,9 +124,10 @@ jobs:
# Checkout to the next release of Vitess
- name: Check out other version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the next release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -142,7 +147,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_reparent_new_vttablet.yml b/.github/workflows/upgrade_downgrade_test_reparent_new_vttablet.yml
index d77b7be53b3..62cb6bf2018 100644
--- a/.github/workflows/upgrade_downgrade_test_reparent_new_vttablet.yml
+++ b/.github/workflows/upgrade_downgrade_test_reparent_new_vttablet.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Reparent New VTTablet
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -27,9 +28,10 @@ jobs:
fi
- name: Check out commit's code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-next-release-ref
@@ -59,6 +61,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -88,6 +91,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -127,9 +131,10 @@ jobs:
# Checkout to the next release of Vitess
- name: Check out other version's code (${{ steps.output-next-release-ref.outputs.next_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-next-release-ref.outputs.next_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the next release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -149,7 +154,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_reparent_old_vtctl.yml b/.github/workflows/upgrade_downgrade_test_reparent_old_vtctl.yml
index 532be0b998e..fc010850117 100644
--- a/.github/workflows/upgrade_downgrade_test_reparent_old_vtctl.yml
+++ b/.github/workflows/upgrade_downgrade_test_reparent_old_vtctl.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Reparent Old Vtctl
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -38,9 +39,10 @@ jobs:
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-previous-release-ref
@@ -58,6 +60,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -87,6 +90,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -119,9 +123,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Check out other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -141,7 +146,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_reparent_old_vttablet.yml b/.github/workflows/upgrade_downgrade_test_reparent_old_vttablet.yml
index 2804e757652..33afe4fdf90 100644
--- a/.github/workflows/upgrade_downgrade_test_reparent_old_vttablet.yml
+++ b/.github/workflows/upgrade_downgrade_test_reparent_old_vttablet.yml
@@ -15,6 +15,7 @@ permissions: read-all
jobs:
upgrade_downgrade_test:
+ timeout-minutes: 60
name: Run Upgrade Downgrade Test - Reparent Old VTTablet
runs-on: gh-hosted-runners-16cores-1-24.04
@@ -38,9 +39,10 @@ jobs:
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
id: output-previous-release-ref
@@ -58,6 +60,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -87,6 +90,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo DEBIAN_FRONTEND="noninteractive" apt-get update
@@ -119,9 +123,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Check out other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -141,7 +146,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/upgrade_downgrade_test_semi_sync.yml b/.github/workflows/upgrade_downgrade_test_semi_sync.yml
index 76706f77b65..a40a55f0d0c 100644
--- a/.github/workflows/upgrade_downgrade_test_semi_sync.yml
+++ b/.github/workflows/upgrade_downgrade_test_semi_sync.yml
@@ -35,9 +35,10 @@ jobs:
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
+ persist-credentials: 'false'
- name: Set output with latest release branch
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +56,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**'
- 'go/**/*.go'
- 'test.go'
@@ -84,6 +86,7 @@ jobs:
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"
- name: Get base dependencies
+ timeout-minutes: 10
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
run: |
sudo apt-get update
@@ -107,9 +110,10 @@ jobs:
# Checkout to the last release of Vitess
- name: Check out other version's code (${{ steps.output-previous-release-ref.outputs.previous_release_ref }})
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ steps.output-previous-release-ref.outputs.previous_release_ref }}
+ persist-credentials: 'false'
- name: Get dependencies for the last release
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -129,7 +133,9 @@ jobs:
# Checkout to this build's commit
- name: Check out commit's code
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Get dependencies for this commit
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
diff --git a/.github/workflows/vitess_tester_vtgate.yml b/.github/workflows/vitess_tester_vtgate.yml
index 7d5cf89a3ec..f9429909374 100644
--- a/.github/workflows/vitess_tester_vtgate.yml
+++ b/.github/workflows/vitess_tester_vtgate.yml
@@ -45,7 +45,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -55,6 +57,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/vtgate/vitess_tester/**'
diff --git a/.github/workflows/vtadmin_web_build.yml b/.github/workflows/vtadmin_web_build.yml
index 822fa8a0920..582f8b57647 100644
--- a/.github/workflows/vtadmin_web_build.yml
+++ b/.github/workflows/vtadmin_web_build.yml
@@ -35,8 +35,10 @@ jobs:
echo Skip ${skip}
echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
if: steps.skip-workflow.outputs.skip-workflow == 'false'
+ with:
+ persist-credentials: 'false'
- uses: actions/setup-node@v4
if: steps.skip-workflow.outputs.skip-workflow == 'false'
diff --git a/.github/workflows/vtadmin_web_lint.yml b/.github/workflows/vtadmin_web_lint.yml
index 694c24734a6..570867f821a 100644
--- a/.github/workflows/vtadmin_web_lint.yml
+++ b/.github/workflows/vtadmin_web_lint.yml
@@ -35,8 +35,10 @@ jobs:
echo Skip ${skip}
echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
if: steps.skip-workflow.outputs.skip-workflow == 'false'
+ with:
+ persist-credentials: 'false'
- uses: actions/setup-node@v4
if: steps.skip-workflow.outputs.skip-workflow == 'false'
diff --git a/.github/workflows/vtadmin_web_unit_tests.yml b/.github/workflows/vtadmin_web_unit_tests.yml
index 72a887c1926..0138f06b2b7 100644
--- a/.github/workflows/vtadmin_web_unit_tests.yml
+++ b/.github/workflows/vtadmin_web_unit_tests.yml
@@ -35,8 +35,10 @@ jobs:
echo Skip ${skip}
echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
if: steps.skip-workflow.outputs.skip-workflow == 'false'
+ with:
+ persist-credentials: 'false'
- uses: actions/setup-node@v4
if: steps.skip-workflow.outputs.skip-workflow == 'false'
diff --git a/.github/workflows/vtop_example.yml b/.github/workflows/vtop_example.yml
index fb5ae87c101..0d27d43b959 100644
--- a/.github/workflows/vtop_example.yml
+++ b/.github/workflows/vtop_example.yml
@@ -36,7 +36,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
diff --git a/go.mod b/go.mod
index 603bc37c62e..d2cd40bc773 100644
--- a/go.mod
+++ b/go.mod
@@ -17,7 +17,7 @@ require (
github.com/evanphx/json-patch v5.9.0+incompatible
github.com/fsnotify/fsnotify v1.8.0
github.com/go-sql-driver/mysql v1.7.1
- github.com/golang/glog v1.2.3
+ github.com/golang/glog v1.2.4
github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.4
github.com/google/go-cmp v0.6.0
diff --git a/go.sum b/go.sum
index faf1e24be13..4d25efb17fa 100644
--- a/go.sum
+++ b/go.sum
@@ -222,8 +222,8 @@ github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.2.3 h1:oDTdz9f5VGVVNGu/Q7UXKWYsD0873HXLHdJUNBsSEKM=
-github.com/golang/glog v1.2.3/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
+github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=
+github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
diff --git a/go/test/endtoend/vreplication/config_test.go b/go/test/endtoend/vreplication/config_test.go
index 3e7dd08f31c..b856572ab7b 100644
--- a/go/test/endtoend/vreplication/config_test.go
+++ b/go/test/endtoend/vreplication/config_test.go
@@ -45,12 +45,18 @@ import (
// default collation as it has to work across versions and the 8.0 default does not exist in 5.7.
var (
// All standard user tables should have a primary key and at least one secondary key.
- customerTypes = []string{"'individual'", "'soho'", "'enterprise'"}
+ customerTypes = []string{"'individual'", "'soho'", "'enterprise'"}
+ customerTableTemplate = `create table customer(cid int auto_increment, name varchar(128) collate utf8mb4_bin, meta json default null,
+ industryCategory varchar(100) generated always as (json_extract(meta, _utf8mb4'$.industry')) virtual, typ enum(%s),
+ sport set('football','cricket','baseball'), ts timestamp not null default current_timestamp, bits bit(2) default b'11', date1 datetime not null default '0000-00-00 00:00:00',
+ date2 datetime not null default '2021-00-01 00:00:00', dec80 decimal(8,0), blb blob, primary key(%s), key(name)) CHARSET=utf8mb4`
+ customerTable = fmt.Sprintf(customerTableTemplate, strings.Join(customerTypes, ","), "cid,typ" /* PK columns */)
+ // customerTableModifiedPK has a PK on (cid) vs (cid,typ).
+ customerTableModifiedPK = fmt.Sprintf(customerTableTemplate, strings.Join(customerTypes, ","), "cid" /* PK columns */)
+
initialProductSchema = fmt.Sprintf(`
create table product(pid int, description varbinary(128), date1 datetime not null default '0000-00-00 00:00:00', date2 datetime not null default '2021-00-01 00:00:00', primary key(pid), key(date1,date2)) CHARSET=utf8mb4;
-create table customer(cid int auto_increment, name varchar(128) collate utf8mb4_bin, meta json default null, industryCategory varchar(100) generated always as (json_extract(meta, _utf8mb4'$.industry')) virtual,
- typ enum(%s), sport set('football','cricket','baseball'), ts timestamp not null default current_timestamp, bits bit(2) default b'11', date1 datetime not null default '0000-00-00 00:00:00',
- date2 datetime not null default '2021-00-01 00:00:00', dec80 decimal(8,0), blb blob, primary key(cid,typ), key(name)) CHARSET=utf8mb4;
+%s;
create table customer_seq(id int, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence';
create table merchant(mname varchar(128), category varchar(128), primary key(mname), key(category)) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
create table orders(oid int, cid int, pid int, mname varchar(128), price int, qty int, total int as (qty * price), total2 int as (qty * price) stored, primary key(oid), key(pid), key(cid)) CHARSET=utf8;
@@ -69,7 +75,8 @@ create table `+"`blüb_tbl`"+` (id int, val1 varchar(20), `+"`blöb1`"+` blob,
create table reftable (id int, val1 varchar(20), primary key(id), key(val1));
create table loadtest (id int, name varchar(256), primary key(id), key(name));
create table nopk (name varchar(128), age int unsigned);
-`, strings.Join(customerTypes, ","))
+`, customerTable)
+
// These should always be ignored in vreplication
internalSchema = `
create table _1e275eef_3b20_11eb_a38f_04ed332e05c2_20201210204529_gho(id int, val varbinary(128), primary key(id));
diff --git a/go/test/endtoend/vreplication/multi_tenant_test.go b/go/test/endtoend/vreplication/multi_tenant_test.go
index 6e73303be8a..2cd908b449f 100644
--- a/go/test/endtoend/vreplication/multi_tenant_test.go
+++ b/go/test/endtoend/vreplication/multi_tenant_test.go
@@ -91,7 +91,15 @@ type multiTenantMigration struct {
}
const (
- mtSchema = "create table t1(id int, tenant_id int, primary key(id, tenant_id)) Engine=InnoDB"
+ // The source/mt schema does not have the tenant_id column in the PK as adding a
+ // column to a table can be done as an INSTANT operation whereas modifying a table's
+ // PK requires a full table rebuild. So as a practical matter in production the
+ // source schema will likely have the tenant_id column, but NOT have it be part of
+ // the PK.
+ mtSchema = "create table t1(id int, tenant_id int, primary key(id)) Engine=InnoDB"
+ // The target/st schema must have the tenant_id column in the PK and the primary
+ // vindex.
+ stSchema = "create table t1(id int, tenant_id int, primary key(id, tenant_id)) Engine=InnoDB"
mtVSchema = `
{
"multi_tenant_spec": {
@@ -127,7 +135,6 @@ const (
}
}
`
- stSchema = mtSchema
stVSchema = `
{
"tables": {
@@ -429,8 +436,11 @@ func (mtm *multiTenantMigration) insertSomeData(t *testing.T, tenantId int64, ke
defer closeConn()
idx := mtm.getLastID(tenantId)
for i := idx + 1; i <= idx+numRows; i++ {
+ // The source table has a PK on id only, so we have to make the id value
+ // unique rather than relying on the combination of (id, tenant_id) for
+ // our uniqueness.
execQueryWithRetry(t, vtgateConn,
- fmt.Sprintf("insert into %s.t1(id, tenant_id) values(%d, %d)", keyspace, i, tenantId), queryTimeout)
+ fmt.Sprintf("insert into %s.t1(id, tenant_id) values(%d, %d)", keyspace, i+(tenantId*1e4), tenantId), queryTimeout)
}
mtm.setLastID(tenantId, idx+numRows)
}
diff --git a/go/test/endtoend/vreplication/vdiff2_test.go b/go/test/endtoend/vreplication/vdiff2_test.go
index 6116e26eef5..c4bb2efc73a 100644
--- a/go/test/endtoend/vreplication/vdiff2_test.go
+++ b/go/test/endtoend/vreplication/vdiff2_test.go
@@ -175,6 +175,15 @@ func TestVDiff2(t *testing.T) {
require.NoError(t, err)
verifyClusterHealth(t, vc)
+ // Pre-create the customer table on the target keyspace, with the primary key on
+ // (cid) vs (cid,typ) on the source. This confirms that we are able to properly
+ // diff the table when the source and target have a different PK definition.
+ // Remove the 0 date restrictions as the customer table uses them in its DEFAULTs.
+ execVtgateQuery(t, vtgateConn, targetKs, "set @@session.sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'")
+ execVtgateQuery(t, vtgateConn, targetKs, customerTableModifiedPK)
+ // Set the sql_mode back to the default.
+ execVtgateQuery(t, vtgateConn, targetKs, "set @@session.sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'")
+
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
// Primary tablets for any new shards are added in the first cell.
diff --git a/go/test/endtoend/vtgate/misc_test.go b/go/test/endtoend/vtgate/misc_test.go
index 55fa139b290..b350002a05b 100644
--- a/go/test/endtoend/vtgate/misc_test.go
+++ b/go/test/endtoend/vtgate/misc_test.go
@@ -753,9 +753,9 @@ func TestDescribeVindex(t *testing.T) {
_, err := conn.ExecuteFetch("describe hash", 1000, false)
require.Error(t, err)
mysqlErr := err.(*sqlerror.SQLError)
- assert.Equal(t, sqlerror.ERNoSuchTable, mysqlErr.Num)
+ assert.Equal(t, sqlerror.ERUnknownTable, mysqlErr.Num)
assert.Equal(t, "42S02", mysqlErr.State)
- assert.ErrorContains(t, mysqlErr, "NotFound desc")
+ assert.ErrorContains(t, mysqlErr, "VT05004: table 'hash' does not exist")
}
func TestEmptyQuery(t *testing.T) {
diff --git a/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go b/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go
index 67eae2395ad..36ad09547f1 100644
--- a/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go
+++ b/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go
@@ -6766,6 +6766,61 @@ func (x *VDiffOptions) GetReportOptions() *VDiffReportOptions {
return nil
}
+type VDiffTableLastPK struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Target *query.QueryResult `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
+ // If the source value is nil then it's the same as the target
+ // and the target value should be used for both.
+ Source *query.QueryResult `protobuf:"bytes,2,opt,name=source,proto3,oneof" json:"source,omitempty"`
+}
+
+func (x *VDiffTableLastPK) Reset() {
+ *x = VDiffTableLastPK{}
+ mi := &file_tabletmanagerdata_proto_msgTypes[132]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *VDiffTableLastPK) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VDiffTableLastPK) ProtoMessage() {}
+
+func (x *VDiffTableLastPK) ProtoReflect() protoreflect.Message {
+ mi := &file_tabletmanagerdata_proto_msgTypes[132]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VDiffTableLastPK.ProtoReflect.Descriptor instead.
+func (*VDiffTableLastPK) Descriptor() ([]byte, []int) {
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{132}
+}
+
+func (x *VDiffTableLastPK) GetTarget() *query.QueryResult {
+ if x != nil {
+ return x.Target
+ }
+ return nil
+}
+
+func (x *VDiffTableLastPK) GetSource() *query.QueryResult {
+ if x != nil {
+ return x.Source
+ }
+ return nil
+}
+
// UpdateVReplicationWorkflowRequest is used to update an existing VReplication
// workflow. Note that the following fields MUST have an explicit value provided
// if you do NOT wish to update the existing value to the given type's ZeroValue:
@@ -6788,7 +6843,7 @@ type UpdateVReplicationWorkflowRequest struct {
func (x *UpdateVReplicationWorkflowRequest) Reset() {
*x = UpdateVReplicationWorkflowRequest{}
- mi := &file_tabletmanagerdata_proto_msgTypes[132]
+ mi := &file_tabletmanagerdata_proto_msgTypes[133]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6800,7 +6855,7 @@ func (x *UpdateVReplicationWorkflowRequest) String() string {
func (*UpdateVReplicationWorkflowRequest) ProtoMessage() {}
func (x *UpdateVReplicationWorkflowRequest) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[132]
+ mi := &file_tabletmanagerdata_proto_msgTypes[133]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6813,7 +6868,7 @@ func (x *UpdateVReplicationWorkflowRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use UpdateVReplicationWorkflowRequest.ProtoReflect.Descriptor instead.
func (*UpdateVReplicationWorkflowRequest) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{132}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{133}
}
func (x *UpdateVReplicationWorkflowRequest) GetWorkflow() string {
@@ -6875,7 +6930,7 @@ type UpdateVReplicationWorkflowResponse struct {
func (x *UpdateVReplicationWorkflowResponse) Reset() {
*x = UpdateVReplicationWorkflowResponse{}
- mi := &file_tabletmanagerdata_proto_msgTypes[133]
+ mi := &file_tabletmanagerdata_proto_msgTypes[134]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6887,7 +6942,7 @@ func (x *UpdateVReplicationWorkflowResponse) String() string {
func (*UpdateVReplicationWorkflowResponse) ProtoMessage() {}
func (x *UpdateVReplicationWorkflowResponse) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[133]
+ mi := &file_tabletmanagerdata_proto_msgTypes[134]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6900,7 +6955,7 @@ func (x *UpdateVReplicationWorkflowResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use UpdateVReplicationWorkflowResponse.ProtoReflect.Descriptor instead.
func (*UpdateVReplicationWorkflowResponse) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{133}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{134}
}
func (x *UpdateVReplicationWorkflowResponse) GetResult() *query.QueryResult {
@@ -6931,7 +6986,7 @@ type UpdateVReplicationWorkflowsRequest struct {
func (x *UpdateVReplicationWorkflowsRequest) Reset() {
*x = UpdateVReplicationWorkflowsRequest{}
- mi := &file_tabletmanagerdata_proto_msgTypes[134]
+ mi := &file_tabletmanagerdata_proto_msgTypes[135]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6943,7 +6998,7 @@ func (x *UpdateVReplicationWorkflowsRequest) String() string {
func (*UpdateVReplicationWorkflowsRequest) ProtoMessage() {}
func (x *UpdateVReplicationWorkflowsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[134]
+ mi := &file_tabletmanagerdata_proto_msgTypes[135]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6956,7 +7011,7 @@ func (x *UpdateVReplicationWorkflowsRequest) ProtoReflect() protoreflect.Message
// Deprecated: Use UpdateVReplicationWorkflowsRequest.ProtoReflect.Descriptor instead.
func (*UpdateVReplicationWorkflowsRequest) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{134}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{135}
}
func (x *UpdateVReplicationWorkflowsRequest) GetAllWorkflows() bool {
@@ -7011,7 +7066,7 @@ type UpdateVReplicationWorkflowsResponse struct {
func (x *UpdateVReplicationWorkflowsResponse) Reset() {
*x = UpdateVReplicationWorkflowsResponse{}
- mi := &file_tabletmanagerdata_proto_msgTypes[135]
+ mi := &file_tabletmanagerdata_proto_msgTypes[136]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7023,7 +7078,7 @@ func (x *UpdateVReplicationWorkflowsResponse) String() string {
func (*UpdateVReplicationWorkflowsResponse) ProtoMessage() {}
func (x *UpdateVReplicationWorkflowsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[135]
+ mi := &file_tabletmanagerdata_proto_msgTypes[136]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7036,7 +7091,7 @@ func (x *UpdateVReplicationWorkflowsResponse) ProtoReflect() protoreflect.Messag
// Deprecated: Use UpdateVReplicationWorkflowsResponse.ProtoReflect.Descriptor instead.
func (*UpdateVReplicationWorkflowsResponse) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{135}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{136}
}
func (x *UpdateVReplicationWorkflowsResponse) GetResult() *query.QueryResult {
@@ -7056,7 +7111,7 @@ type ResetSequencesRequest struct {
func (x *ResetSequencesRequest) Reset() {
*x = ResetSequencesRequest{}
- mi := &file_tabletmanagerdata_proto_msgTypes[136]
+ mi := &file_tabletmanagerdata_proto_msgTypes[137]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7068,7 +7123,7 @@ func (x *ResetSequencesRequest) String() string {
func (*ResetSequencesRequest) ProtoMessage() {}
func (x *ResetSequencesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[136]
+ mi := &file_tabletmanagerdata_proto_msgTypes[137]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7081,7 +7136,7 @@ func (x *ResetSequencesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResetSequencesRequest.ProtoReflect.Descriptor instead.
func (*ResetSequencesRequest) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{136}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{137}
}
func (x *ResetSequencesRequest) GetTables() []string {
@@ -7099,7 +7154,7 @@ type ResetSequencesResponse struct {
func (x *ResetSequencesResponse) Reset() {
*x = ResetSequencesResponse{}
- mi := &file_tabletmanagerdata_proto_msgTypes[137]
+ mi := &file_tabletmanagerdata_proto_msgTypes[138]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7111,7 +7166,7 @@ func (x *ResetSequencesResponse) String() string {
func (*ResetSequencesResponse) ProtoMessage() {}
func (x *ResetSequencesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[137]
+ mi := &file_tabletmanagerdata_proto_msgTypes[138]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7124,7 +7179,7 @@ func (x *ResetSequencesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ResetSequencesResponse.ProtoReflect.Descriptor instead.
func (*ResetSequencesResponse) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{137}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{138}
}
type CheckThrottlerRequest struct {
@@ -7145,7 +7200,7 @@ type CheckThrottlerRequest struct {
func (x *CheckThrottlerRequest) Reset() {
*x = CheckThrottlerRequest{}
- mi := &file_tabletmanagerdata_proto_msgTypes[138]
+ mi := &file_tabletmanagerdata_proto_msgTypes[139]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7157,7 +7212,7 @@ func (x *CheckThrottlerRequest) String() string {
func (*CheckThrottlerRequest) ProtoMessage() {}
func (x *CheckThrottlerRequest) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[138]
+ mi := &file_tabletmanagerdata_proto_msgTypes[139]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7170,7 +7225,7 @@ func (x *CheckThrottlerRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CheckThrottlerRequest.ProtoReflect.Descriptor instead.
func (*CheckThrottlerRequest) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{138}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{139}
}
func (x *CheckThrottlerRequest) GetAppName() string {
@@ -7239,7 +7294,7 @@ type CheckThrottlerResponse struct {
func (x *CheckThrottlerResponse) Reset() {
*x = CheckThrottlerResponse{}
- mi := &file_tabletmanagerdata_proto_msgTypes[139]
+ mi := &file_tabletmanagerdata_proto_msgTypes[140]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7251,7 +7306,7 @@ func (x *CheckThrottlerResponse) String() string {
func (*CheckThrottlerResponse) ProtoMessage() {}
func (x *CheckThrottlerResponse) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[139]
+ mi := &file_tabletmanagerdata_proto_msgTypes[140]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7264,7 +7319,7 @@ func (x *CheckThrottlerResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use CheckThrottlerResponse.ProtoReflect.Descriptor instead.
func (*CheckThrottlerResponse) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{139}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{140}
}
func (x *CheckThrottlerResponse) GetStatusCode() int32 {
@@ -7345,7 +7400,7 @@ type GetThrottlerStatusRequest struct {
func (x *GetThrottlerStatusRequest) Reset() {
*x = GetThrottlerStatusRequest{}
- mi := &file_tabletmanagerdata_proto_msgTypes[140]
+ mi := &file_tabletmanagerdata_proto_msgTypes[141]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7357,7 +7412,7 @@ func (x *GetThrottlerStatusRequest) String() string {
func (*GetThrottlerStatusRequest) ProtoMessage() {}
func (x *GetThrottlerStatusRequest) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[140]
+ mi := &file_tabletmanagerdata_proto_msgTypes[141]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7370,7 +7425,7 @@ func (x *GetThrottlerStatusRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetThrottlerStatusRequest.ProtoReflect.Descriptor instead.
func (*GetThrottlerStatusRequest) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{140}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{141}
}
type GetThrottlerStatusResponse struct {
@@ -7418,7 +7473,7 @@ type GetThrottlerStatusResponse struct {
func (x *GetThrottlerStatusResponse) Reset() {
*x = GetThrottlerStatusResponse{}
- mi := &file_tabletmanagerdata_proto_msgTypes[141]
+ mi := &file_tabletmanagerdata_proto_msgTypes[142]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7430,7 +7485,7 @@ func (x *GetThrottlerStatusResponse) String() string {
func (*GetThrottlerStatusResponse) ProtoMessage() {}
func (x *GetThrottlerStatusResponse) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[141]
+ mi := &file_tabletmanagerdata_proto_msgTypes[142]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7443,7 +7498,7 @@ func (x *GetThrottlerStatusResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetThrottlerStatusResponse.ProtoReflect.Descriptor instead.
func (*GetThrottlerStatusResponse) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{141}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{142}
}
func (x *GetThrottlerStatusResponse) GetTabletAlias() string {
@@ -7583,7 +7638,7 @@ type ChangeTagsRequest struct {
func (x *ChangeTagsRequest) Reset() {
*x = ChangeTagsRequest{}
- mi := &file_tabletmanagerdata_proto_msgTypes[142]
+ mi := &file_tabletmanagerdata_proto_msgTypes[143]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7595,7 +7650,7 @@ func (x *ChangeTagsRequest) String() string {
func (*ChangeTagsRequest) ProtoMessage() {}
func (x *ChangeTagsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[142]
+ mi := &file_tabletmanagerdata_proto_msgTypes[143]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7608,7 +7663,7 @@ func (x *ChangeTagsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ChangeTagsRequest.ProtoReflect.Descriptor instead.
func (*ChangeTagsRequest) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{142}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{143}
}
func (x *ChangeTagsRequest) GetTags() map[string]string {
@@ -7635,7 +7690,7 @@ type ChangeTagsResponse struct {
func (x *ChangeTagsResponse) Reset() {
*x = ChangeTagsResponse{}
- mi := &file_tabletmanagerdata_proto_msgTypes[143]
+ mi := &file_tabletmanagerdata_proto_msgTypes[144]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7647,7 +7702,7 @@ func (x *ChangeTagsResponse) String() string {
func (*ChangeTagsResponse) ProtoMessage() {}
func (x *ChangeTagsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[143]
+ mi := &file_tabletmanagerdata_proto_msgTypes[144]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7660,7 +7715,7 @@ func (x *ChangeTagsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ChangeTagsResponse.ProtoReflect.Descriptor instead.
func (*ChangeTagsResponse) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{143}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{144}
}
func (x *ChangeTagsResponse) GetTags() map[string]string {
@@ -7693,7 +7748,7 @@ type ReadVReplicationWorkflowResponse_Stream struct {
func (x *ReadVReplicationWorkflowResponse_Stream) Reset() {
*x = ReadVReplicationWorkflowResponse_Stream{}
- mi := &file_tabletmanagerdata_proto_msgTypes[149]
+ mi := &file_tabletmanagerdata_proto_msgTypes[150]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7705,7 +7760,7 @@ func (x *ReadVReplicationWorkflowResponse_Stream) String() string {
func (*ReadVReplicationWorkflowResponse_Stream) ProtoMessage() {}
func (x *ReadVReplicationWorkflowResponse_Stream) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[149]
+ mi := &file_tabletmanagerdata_proto_msgTypes[150]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7844,7 +7899,7 @@ type CheckThrottlerResponse_Metric struct {
func (x *CheckThrottlerResponse_Metric) Reset() {
*x = CheckThrottlerResponse_Metric{}
- mi := &file_tabletmanagerdata_proto_msgTypes[152]
+ mi := &file_tabletmanagerdata_proto_msgTypes[153]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7856,7 +7911,7 @@ func (x *CheckThrottlerResponse_Metric) String() string {
func (*CheckThrottlerResponse_Metric) ProtoMessage() {}
func (x *CheckThrottlerResponse_Metric) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[152]
+ mi := &file_tabletmanagerdata_proto_msgTypes[153]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7869,7 +7924,7 @@ func (x *CheckThrottlerResponse_Metric) ProtoReflect() protoreflect.Message {
// Deprecated: Use CheckThrottlerResponse_Metric.ProtoReflect.Descriptor instead.
func (*CheckThrottlerResponse_Metric) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{139, 0}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{140, 0}
}
func (x *CheckThrottlerResponse_Metric) GetName() string {
@@ -7939,7 +7994,7 @@ type GetThrottlerStatusResponse_MetricResult struct {
func (x *GetThrottlerStatusResponse_MetricResult) Reset() {
*x = GetThrottlerStatusResponse_MetricResult{}
- mi := &file_tabletmanagerdata_proto_msgTypes[154]
+ mi := &file_tabletmanagerdata_proto_msgTypes[155]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7951,7 +8006,7 @@ func (x *GetThrottlerStatusResponse_MetricResult) String() string {
func (*GetThrottlerStatusResponse_MetricResult) ProtoMessage() {}
func (x *GetThrottlerStatusResponse_MetricResult) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[154]
+ mi := &file_tabletmanagerdata_proto_msgTypes[155]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7964,7 +8019,7 @@ func (x *GetThrottlerStatusResponse_MetricResult) ProtoReflect() protoreflect.Me
// Deprecated: Use GetThrottlerStatusResponse_MetricResult.ProtoReflect.Descriptor instead.
func (*GetThrottlerStatusResponse_MetricResult) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{141, 0}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{142, 0}
}
func (x *GetThrottlerStatusResponse_MetricResult) GetValue() float64 {
@@ -7992,7 +8047,7 @@ type GetThrottlerStatusResponse_MetricHealth struct {
func (x *GetThrottlerStatusResponse_MetricHealth) Reset() {
*x = GetThrottlerStatusResponse_MetricHealth{}
- mi := &file_tabletmanagerdata_proto_msgTypes[157]
+ mi := &file_tabletmanagerdata_proto_msgTypes[158]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8004,7 +8059,7 @@ func (x *GetThrottlerStatusResponse_MetricHealth) String() string {
func (*GetThrottlerStatusResponse_MetricHealth) ProtoMessage() {}
func (x *GetThrottlerStatusResponse_MetricHealth) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[157]
+ mi := &file_tabletmanagerdata_proto_msgTypes[158]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8017,7 +8072,7 @@ func (x *GetThrottlerStatusResponse_MetricHealth) ProtoReflect() protoreflect.Me
// Deprecated: Use GetThrottlerStatusResponse_MetricHealth.ProtoReflect.Descriptor instead.
func (*GetThrottlerStatusResponse_MetricHealth) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{141, 3}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{142, 3}
}
func (x *GetThrottlerStatusResponse_MetricHealth) GetLastHealthyAt() *vttime.Time {
@@ -8047,7 +8102,7 @@ type GetThrottlerStatusResponse_RecentApp struct {
func (x *GetThrottlerStatusResponse_RecentApp) Reset() {
*x = GetThrottlerStatusResponse_RecentApp{}
- mi := &file_tabletmanagerdata_proto_msgTypes[161]
+ mi := &file_tabletmanagerdata_proto_msgTypes[162]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8059,7 +8114,7 @@ func (x *GetThrottlerStatusResponse_RecentApp) String() string {
func (*GetThrottlerStatusResponse_RecentApp) ProtoMessage() {}
func (x *GetThrottlerStatusResponse_RecentApp) ProtoReflect() protoreflect.Message {
- mi := &file_tabletmanagerdata_proto_msgTypes[161]
+ mi := &file_tabletmanagerdata_proto_msgTypes[162]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8072,7 +8127,7 @@ func (x *GetThrottlerStatusResponse_RecentApp) ProtoReflect() protoreflect.Messa
// Deprecated: Use GetThrottlerStatusResponse_RecentApp.ProtoReflect.Descriptor instead.
func (*GetThrottlerStatusResponse_RecentApp) Descriptor() ([]byte, []int) {
- return file_tabletmanagerdata_proto_rawDescGZIP(), []int{141, 7}
+ return file_tabletmanagerdata_proto_rawDescGZIP(), []int{142, 7}
}
func (x *GetThrottlerStatusResponse_RecentApp) GetCheckedAt() *vttime.Time {
@@ -8961,317 +9016,324 @@ var file_tabletmanagerdata_proto_rawDesc = []byte{
0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65,
0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56, 0x44, 0x69,
0x66, 0x66, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
- 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xed,
- 0x04, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
- 0x12, 0x14, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74,
- 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74,
- 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79,
- 0x70, 0x65, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12,
- 0x71, 0x0a, 0x1b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e,
- 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x53,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x48, 0x00, 0x52, 0x19, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88,
- 0x01, 0x01, 0x12, 0x33, 0x0a, 0x06, 0x6f, 0x6e, 0x5f, 0x64, 0x64, 0x6c, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x2e,
- 0x4f, 0x6e, 0x44, 0x44, 0x4c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x05, 0x6f,
- 0x6e, 0x44, 0x64, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64,
- 0x61, 0x74, 0x61, 0x2e, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x02, 0x52,
- 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x10, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x08, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x52,
- 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c,
- 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x1a,
- 0x42, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
- 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x73,
- 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x64, 0x6c, 0x42, 0x08,
- 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x50,
- 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x51, 0x75, 0x65,
- 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
- 0x22, 0xd6, 0x02, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x52, 0x65, 0x70, 0x6c,
- 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x5f, 0x77,
- 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
- 0x61, 0x6c, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x2b, 0x0a, 0x11,
- 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
- 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
- 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63,
- 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x57, 0x6f, 0x72,
- 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61,
- 0x74, 0x61, 0x2e, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57,
- 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x05,
- 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x6d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f,
- 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02,
- 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01,
- 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x6f, 0x70,
- 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x23, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57,
- 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7a,
+ 0x0a, 0x10, 0x56, 0x44, 0x69, 0x66, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74,
+ 0x50, 0x4b, 0x12, 0x2a, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
+ 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2f,
+ 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+ 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75,
+ 0x6c, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42,
+ 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xed, 0x04, 0x0a, 0x21, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05,
+ 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x65, 0x6c,
+ 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70,
+ 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64,
+ 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x71, 0x0a, 0x1b, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x2c, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
+ 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00,
+ 0x52, 0x19, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33,
+ 0x0a, 0x06, 0x6f, 0x6e, 0x5f, 0x64, 0x64, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17,
+ 0x2e, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x6e, 0x44, 0x44,
+ 0x4c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x05, 0x6f, 0x6e, 0x44, 0x64, 0x6c,
+ 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x2e,
+ 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b,
+ 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x02, 0x52, 0x05, 0x73, 0x74, 0x61,
+ 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f,
+ 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x49, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64,
+ 0x61, 0x74, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x76, 0x65, 0x72,
+ 0x72, 0x69, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42,
+ 0x1e, 0x0a, 0x1c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42,
+ 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x64, 0x6c, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73,
+ 0x74, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x50, 0x0a, 0x22, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x2a, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65,
- 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2f, 0x0a, 0x15,
- 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x18, 0x0a,
- 0x16, 0x52, 0x65, 0x73, 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x15, 0x43, 0x68, 0x65, 0x63,
- 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
- 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f,
- 0x70, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x10, 0x6f, 0x6b,
- 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6f, 0x6b, 0x49, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69,
- 0x73, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x6d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x9f, 0x06, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63,
- 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43,
- 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72,
- 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68,
- 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a,
- 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e,
- 0x74, 0x6c, 0x79, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b,
- 0x65, 0x64, 0x12, 0x50, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72,
- 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e,
- 0x32, 0x2d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
- 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74,
- 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52,
- 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x8b, 0x02,
- 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
- 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d,
- 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61,
- 0x74, 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65,
- 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x72,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74,
+ 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xd6, 0x02, 0x0a,
+ 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66,
+ 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x57,
+ 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x57, 0x6f, 0x72, 0x6b,
+ 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
+ 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f,
+ 0x77, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x56,
+ 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66,
+ 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74,
+ 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x73, 0x74,
+ 0x6f, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a,
+ 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x70, 0x6f, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56,
+ 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x66,
+ 0x6c, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06,
+ 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x71,
+ 0x75, 0x65, 0x72, 0x79, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+ 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2f, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x65,
+ 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x73,
+ 0x65, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x15, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72,
+ 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a,
+ 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x36,
+ 0x0a, 0x17, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68,
+ 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x15, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72,
+ 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x10, 0x6f, 0x6b, 0x5f, 0x69, 0x66, 0x5f,
+ 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x0d, 0x6f, 0x6b, 0x49, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12,
+ 0x32, 0x0a, 0x15, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13,
+ 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x22, 0x9f, 0x06, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72,
+ 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
+ 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68,
+ 0x6f, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x5f,
+ 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72,
+ 0x65, 0x63, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x50,
+ 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x36, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64,
+ 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c,
+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+ 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73,
+ 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75,
+ 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x74,
0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61,
0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74,
- 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb6, 0x10, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x68,
- 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f,
- 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62,
- 0x6c, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73,
- 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73,
- 0x5f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69,
- 0x73, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6f, 0x70,
- 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x4f, 0x70, 0x65, 0x6e,
- 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x74, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x74, 0x12, 0x28,
- 0x0a, 0x10, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x71, 0x75, 0x65,
- 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74,
- 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74,
- 0x72, 0x69, 0x63, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x66, 0x61,
- 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0a, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x68, 0x72, 0x65,
- 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x5f, 0x64, 0x65, 0x66,
- 0x61, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x6d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x55, 0x73, 0x65, 0x64, 0x41, 0x73, 0x44, 0x65, 0x66, 0x61,
- 0x75, 0x6c, 0x74, 0x12, 0x73, 0x0a, 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
- 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x44, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64,
- 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41,
- 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
- 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x18, 0x0d, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74,
- 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
- 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
- 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x12, 0x67, 0x0a, 0x0e, 0x6d, 0x65,
- 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67,
- 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74,
- 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x48, 0x65, 0x61,
- 0x6c, 0x74, 0x68, 0x12, 0x67, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64,
- 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x61,
- 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e,
- 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x6f, 0x74,
- 0x74, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x74,
- 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x74, 0x0a, 0x13,
- 0x61, 0x70, 0x70, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x74, 0x61, 0x62, 0x6c,
- 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65,
- 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x68, 0x65, 0x63,
- 0x6b, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
- 0x11, 0x61, 0x70, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69,
- 0x63, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x5f, 0x63,
- 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65,
- 0x63, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x5e, 0x0a,
- 0x0b, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x12, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67,
- 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74,
- 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72,
- 0x79, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x73, 0x1a, 0x3a, 0x0a,
- 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x80, 0x01, 0x0a, 0x16, 0x41, 0x67,
- 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45,
- 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61,
- 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72,
- 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c,
- 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15,
- 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73,
- 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x1a, 0x81, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x65, 0x61, 0x6c,
- 0x74, 0x68, 0x12, 0x34, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
- 0x68, 0x79, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x74,
- 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x48,
- 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x65, 0x63, 0x6f,
- 0x6e, 0x64, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68,
- 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x73, 0x65,
- 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x65,
- 0x61, 0x6c, 0x74, 0x68, 0x79, 0x1a, 0x7c, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
- 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74,
- 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61,
- 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72,
- 0x69, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a, 0x12, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64,
- 0x41, 0x70, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x6f, 0x70,
- 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x41,
- 0x70, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xad, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x65,
- 0x6e, 0x74, 0x41, 0x70, 0x70, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64,
- 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x74, 0x74, 0x69,
- 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64,
- 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43,
- 0x6f, 0x64, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f,
- 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x74, 0x61, 0x62,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x8b, 0x02, 0x0a, 0x06, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
+ 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x14, 0x0a,
+ 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a,
+ 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63,
+ 0x6f, 0x70, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f,
+ 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x74, 0x61, 0x62,
0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43,
0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x76, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x65, 0x6e,
- 0x74, 0x41, 0x70, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x61,
+ 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0x6c, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x65,
+ 0x63, 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f,
+ 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x22, 0xb6, 0x10, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74,
+ 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61,
+ 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x41,
+ 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x65, 0x61,
+ 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x65, 0x61,
+ 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x69, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x09, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
+ 0x73, 0x5f, 0x64, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x09, 0x69, 0x73, 0x44, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61,
+ 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x51,
+ 0x75, 0x65, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x51,
+ 0x75, 0x65, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
+ 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52,
+ 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
+ 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61,
+ 0x6d, 0x65, 0x55, 0x73, 0x65, 0x64, 0x41, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12,
+ 0x73, 0x0a, 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x74, 0x61,
0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e,
0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x6e,
- 0x74, 0x41, 0x70, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
- 0xaa, 0x01, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61,
- 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70,
- 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c,
- 0x61, 0x63, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65,
+ 0x67, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x73, 0x12, 0x70, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74,
+ 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x43, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64,
+ 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x68, 0x72, 0x65,
+ 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x12, 0x67, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
+ 0x73, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40,
+ 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61,
+ 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65,
+ 0x74, 0x72, 0x69, 0x63, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12,
+ 0x67, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70,
+ 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74,
+ 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54,
+ 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64,
+ 0x41, 0x70, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x74, 0x68, 0x72, 0x6f, 0x74,
+ 0x74, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x74, 0x0a, 0x13, 0x61, 0x70, 0x70, 0x5f,
+ 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18,
+ 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61,
+ 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72,
+ 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x4d,
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x61, 0x70, 0x70,
+ 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x29,
+ 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b,
+ 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74,
+ 0x6c, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x5e, 0x0a, 0x0b, 0x72, 0x65, 0x63,
+ 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d,
+ 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61,
+ 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65,
+ 0x63, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x72,
+ 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4d, 0x65, 0x74,
+ 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
+ 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x80, 0x01, 0x0a, 0x16, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67,
+ 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
- 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x01, 0x0a,
- 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
- 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x67, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73,
+ 0x65, 0x79, 0x12, 0x50, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+ 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c,
+ 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x72,
+ 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x81, 0x01,
+ 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x34,
+ 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x61,
+ 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65,
+ 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74,
+ 0x68, 0x79, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x5f,
+ 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
+ 0x68, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+ 0x73, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
+ 0x79, 0x1a, 0x7c, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x48, 0x65, 0x61, 0x6c,
+ 0x74, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74,
+ 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x65,
+ 0x61, 0x6c, 0x74, 0x68, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+ 0x5c, 0x0a, 0x12, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
- 0x01, 0x2a, 0x3e, 0x0a, 0x19, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x07,
- 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x4f, 0x52, 0x44,
- 0x45, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
- 0x03, 0x2a, 0x83, 0x01, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74,
- 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65,
- 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12,
- 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x48, 0x52, 0x45, 0x53,
- 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12,
- 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x50, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12,
- 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49,
- 0x43, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f,
- 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x42, 0x30, 0x5a, 0x2e, 0x76, 0x69, 0x74, 0x65, 0x73,
- 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76,
- 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61,
- 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
+ 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74,
+ 0x61, 0x2e, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70, 0x52, 0x75,
+ 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a,
+ 0x16, 0x41, 0x70, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69,
+ 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
+ 0x02, 0x38, 0x01, 0x1a, 0xad, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x70,
+ 0x70, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f,
+ 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d,
+ 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b,
+ 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43,
+ 0x6f, 0x64, 0x65, 0x1a, 0x76, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x70,
+ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74,
+ 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54,
+ 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x41, 0x70, 0x70,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xaa, 0x01, 0x0a, 0x11,
+ 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x2e, 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64,
+ 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x1a,
+ 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+ 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x01, 0x0a, 0x12, 0x43, 0x68, 0x61,
+ 0x6e, 0x67, 0x65, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x43, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74,
+ 0x61, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04,
+ 0x74, 0x61, 0x67, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x3e, 0x0a,
+ 0x19, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e,
+ 0x59, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x01,
+ 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x2a, 0x83, 0x01,
+ 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0d, 0x0a, 0x09,
+ 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f,
+ 0x4b, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44,
+ 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x41,
+ 0x50, 0x50, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x55,
+ 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x10, 0x04, 0x12,
+ 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x10, 0x05, 0x42, 0x30, 0x5a, 0x2e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f,
+ 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+ 0x72, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -9287,7 +9349,7 @@ func file_tabletmanagerdata_proto_rawDescGZIP() []byte {
}
var file_tabletmanagerdata_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_tabletmanagerdata_proto_msgTypes = make([]protoimpl.MessageInfo, 165)
+var file_tabletmanagerdata_proto_msgTypes = make([]protoimpl.MessageInfo, 166)
var file_tabletmanagerdata_proto_goTypes = []any{
(TabletSelectionPreference)(0), // 0: tabletmanagerdata.TabletSelectionPreference
(CheckThrottlerResponseCode)(0), // 1: tabletmanagerdata.CheckThrottlerResponseCode
@@ -9423,163 +9485,166 @@ var file_tabletmanagerdata_proto_goTypes = []any{
(*VDiffReportOptions)(nil), // 131: tabletmanagerdata.VDiffReportOptions
(*VDiffCoreOptions)(nil), // 132: tabletmanagerdata.VDiffCoreOptions
(*VDiffOptions)(nil), // 133: tabletmanagerdata.VDiffOptions
- (*UpdateVReplicationWorkflowRequest)(nil), // 134: tabletmanagerdata.UpdateVReplicationWorkflowRequest
- (*UpdateVReplicationWorkflowResponse)(nil), // 135: tabletmanagerdata.UpdateVReplicationWorkflowResponse
- (*UpdateVReplicationWorkflowsRequest)(nil), // 136: tabletmanagerdata.UpdateVReplicationWorkflowsRequest
- (*UpdateVReplicationWorkflowsResponse)(nil), // 137: tabletmanagerdata.UpdateVReplicationWorkflowsResponse
- (*ResetSequencesRequest)(nil), // 138: tabletmanagerdata.ResetSequencesRequest
- (*ResetSequencesResponse)(nil), // 139: tabletmanagerdata.ResetSequencesResponse
- (*CheckThrottlerRequest)(nil), // 140: tabletmanagerdata.CheckThrottlerRequest
- (*CheckThrottlerResponse)(nil), // 141: tabletmanagerdata.CheckThrottlerResponse
- (*GetThrottlerStatusRequest)(nil), // 142: tabletmanagerdata.GetThrottlerStatusRequest
- (*GetThrottlerStatusResponse)(nil), // 143: tabletmanagerdata.GetThrottlerStatusResponse
- (*ChangeTagsRequest)(nil), // 144: tabletmanagerdata.ChangeTagsRequest
- (*ChangeTagsResponse)(nil), // 145: tabletmanagerdata.ChangeTagsResponse
- nil, // 146: tabletmanagerdata.UserPermission.PrivilegesEntry
- nil, // 147: tabletmanagerdata.DbPermission.PrivilegesEntry
- nil, // 148: tabletmanagerdata.ExecuteHookRequest.ExtraEnvEntry
- nil, // 149: tabletmanagerdata.GetGlobalStatusVarsResponse.StatusValuesEntry
- nil, // 150: tabletmanagerdata.DeleteTableDataRequest.TableFiltersEntry
- (*ReadVReplicationWorkflowResponse_Stream)(nil), // 151: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream
- nil, // 152: tabletmanagerdata.ReadVReplicationWorkflowResponse.ConfigOverridesEntry
- nil, // 153: tabletmanagerdata.UpdateVReplicationWorkflowRequest.ConfigOverridesEntry
- (*CheckThrottlerResponse_Metric)(nil), // 154: tabletmanagerdata.CheckThrottlerResponse.Metric
- nil, // 155: tabletmanagerdata.CheckThrottlerResponse.MetricsEntry
- (*GetThrottlerStatusResponse_MetricResult)(nil), // 156: tabletmanagerdata.GetThrottlerStatusResponse.MetricResult
- nil, // 157: tabletmanagerdata.GetThrottlerStatusResponse.AggregatedMetricsEntry
- nil, // 158: tabletmanagerdata.GetThrottlerStatusResponse.MetricThresholdsEntry
- (*GetThrottlerStatusResponse_MetricHealth)(nil), // 159: tabletmanagerdata.GetThrottlerStatusResponse.MetricHealth
- nil, // 160: tabletmanagerdata.GetThrottlerStatusResponse.MetricsHealthEntry
- nil, // 161: tabletmanagerdata.GetThrottlerStatusResponse.ThrottledAppsEntry
- nil, // 162: tabletmanagerdata.GetThrottlerStatusResponse.AppCheckedMetricsEntry
- (*GetThrottlerStatusResponse_RecentApp)(nil), // 163: tabletmanagerdata.GetThrottlerStatusResponse.RecentApp
- nil, // 164: tabletmanagerdata.GetThrottlerStatusResponse.RecentAppsEntry
- nil, // 165: tabletmanagerdata.ChangeTagsRequest.TagsEntry
- nil, // 166: tabletmanagerdata.ChangeTagsResponse.TagsEntry
- (*query.Field)(nil), // 167: query.Field
- (topodata.TabletType)(0), // 168: topodata.TabletType
- (*vtrpc.CallerID)(nil), // 169: vtrpc.CallerID
- (*query.QueryResult)(nil), // 170: query.QueryResult
- (*query.TransactionMetadata)(nil), // 171: query.TransactionMetadata
- (*mysqlctl.HostMetricsResponse)(nil), // 172: mysqlctl.HostMetricsResponse
- (*replicationdata.Status)(nil), // 173: replicationdata.Status
- (*replicationdata.PrimaryStatus)(nil), // 174: replicationdata.PrimaryStatus
- (*topodata.TabletAlias)(nil), // 175: topodata.TabletAlias
- (*replicationdata.FullStatus)(nil), // 176: replicationdata.FullStatus
- (replicationdata.StopReplicationMode)(0), // 177: replicationdata.StopReplicationMode
- (*replicationdata.StopReplicationStatus)(nil), // 178: replicationdata.StopReplicationStatus
- (*logutil.Event)(nil), // 179: logutil.Event
- (*vttime.Time)(nil), // 180: vttime.Time
- (*binlogdata.BinlogSource)(nil), // 181: binlogdata.BinlogSource
- (binlogdata.VReplicationWorkflowType)(0), // 182: binlogdata.VReplicationWorkflowType
- (binlogdata.VReplicationWorkflowSubType)(0), // 183: binlogdata.VReplicationWorkflowSubType
- (binlogdata.VReplicationWorkflowState)(0), // 184: binlogdata.VReplicationWorkflowState
- (binlogdata.OnDDLAction)(0), // 185: binlogdata.OnDDLAction
- (*topodata.ThrottledAppRule)(nil), // 186: topodata.ThrottledAppRule
+ (*VDiffTableLastPK)(nil), // 134: tabletmanagerdata.VDiffTableLastPK
+ (*UpdateVReplicationWorkflowRequest)(nil), // 135: tabletmanagerdata.UpdateVReplicationWorkflowRequest
+ (*UpdateVReplicationWorkflowResponse)(nil), // 136: tabletmanagerdata.UpdateVReplicationWorkflowResponse
+ (*UpdateVReplicationWorkflowsRequest)(nil), // 137: tabletmanagerdata.UpdateVReplicationWorkflowsRequest
+ (*UpdateVReplicationWorkflowsResponse)(nil), // 138: tabletmanagerdata.UpdateVReplicationWorkflowsResponse
+ (*ResetSequencesRequest)(nil), // 139: tabletmanagerdata.ResetSequencesRequest
+ (*ResetSequencesResponse)(nil), // 140: tabletmanagerdata.ResetSequencesResponse
+ (*CheckThrottlerRequest)(nil), // 141: tabletmanagerdata.CheckThrottlerRequest
+ (*CheckThrottlerResponse)(nil), // 142: tabletmanagerdata.CheckThrottlerResponse
+ (*GetThrottlerStatusRequest)(nil), // 143: tabletmanagerdata.GetThrottlerStatusRequest
+ (*GetThrottlerStatusResponse)(nil), // 144: tabletmanagerdata.GetThrottlerStatusResponse
+ (*ChangeTagsRequest)(nil), // 145: tabletmanagerdata.ChangeTagsRequest
+ (*ChangeTagsResponse)(nil), // 146: tabletmanagerdata.ChangeTagsResponse
+ nil, // 147: tabletmanagerdata.UserPermission.PrivilegesEntry
+ nil, // 148: tabletmanagerdata.DbPermission.PrivilegesEntry
+ nil, // 149: tabletmanagerdata.ExecuteHookRequest.ExtraEnvEntry
+ nil, // 150: tabletmanagerdata.GetGlobalStatusVarsResponse.StatusValuesEntry
+ nil, // 151: tabletmanagerdata.DeleteTableDataRequest.TableFiltersEntry
+ (*ReadVReplicationWorkflowResponse_Stream)(nil), // 152: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream
+ nil, // 153: tabletmanagerdata.ReadVReplicationWorkflowResponse.ConfigOverridesEntry
+ nil, // 154: tabletmanagerdata.UpdateVReplicationWorkflowRequest.ConfigOverridesEntry
+ (*CheckThrottlerResponse_Metric)(nil), // 155: tabletmanagerdata.CheckThrottlerResponse.Metric
+ nil, // 156: tabletmanagerdata.CheckThrottlerResponse.MetricsEntry
+ (*GetThrottlerStatusResponse_MetricResult)(nil), // 157: tabletmanagerdata.GetThrottlerStatusResponse.MetricResult
+ nil, // 158: tabletmanagerdata.GetThrottlerStatusResponse.AggregatedMetricsEntry
+ nil, // 159: tabletmanagerdata.GetThrottlerStatusResponse.MetricThresholdsEntry
+ (*GetThrottlerStatusResponse_MetricHealth)(nil), // 160: tabletmanagerdata.GetThrottlerStatusResponse.MetricHealth
+ nil, // 161: tabletmanagerdata.GetThrottlerStatusResponse.MetricsHealthEntry
+ nil, // 162: tabletmanagerdata.GetThrottlerStatusResponse.ThrottledAppsEntry
+ nil, // 163: tabletmanagerdata.GetThrottlerStatusResponse.AppCheckedMetricsEntry
+ (*GetThrottlerStatusResponse_RecentApp)(nil), // 164: tabletmanagerdata.GetThrottlerStatusResponse.RecentApp
+ nil, // 165: tabletmanagerdata.GetThrottlerStatusResponse.RecentAppsEntry
+ nil, // 166: tabletmanagerdata.ChangeTagsRequest.TagsEntry
+ nil, // 167: tabletmanagerdata.ChangeTagsResponse.TagsEntry
+ (*query.Field)(nil), // 168: query.Field
+ (topodata.TabletType)(0), // 169: topodata.TabletType
+ (*vtrpc.CallerID)(nil), // 170: vtrpc.CallerID
+ (*query.QueryResult)(nil), // 171: query.QueryResult
+ (*query.TransactionMetadata)(nil), // 172: query.TransactionMetadata
+ (*mysqlctl.HostMetricsResponse)(nil), // 173: mysqlctl.HostMetricsResponse
+ (*replicationdata.Status)(nil), // 174: replicationdata.Status
+ (*replicationdata.PrimaryStatus)(nil), // 175: replicationdata.PrimaryStatus
+ (*topodata.TabletAlias)(nil), // 176: topodata.TabletAlias
+ (*replicationdata.FullStatus)(nil), // 177: replicationdata.FullStatus
+ (replicationdata.StopReplicationMode)(0), // 178: replicationdata.StopReplicationMode
+ (*replicationdata.StopReplicationStatus)(nil), // 179: replicationdata.StopReplicationStatus
+ (*logutil.Event)(nil), // 180: logutil.Event
+ (*vttime.Time)(nil), // 181: vttime.Time
+ (*binlogdata.BinlogSource)(nil), // 182: binlogdata.BinlogSource
+ (binlogdata.VReplicationWorkflowType)(0), // 183: binlogdata.VReplicationWorkflowType
+ (binlogdata.VReplicationWorkflowSubType)(0), // 184: binlogdata.VReplicationWorkflowSubType
+ (binlogdata.VReplicationWorkflowState)(0), // 185: binlogdata.VReplicationWorkflowState
+ (binlogdata.OnDDLAction)(0), // 186: binlogdata.OnDDLAction
+ (*topodata.ThrottledAppRule)(nil), // 187: topodata.ThrottledAppRule
}
var file_tabletmanagerdata_proto_depIdxs = []int32{
- 167, // 0: tabletmanagerdata.TableDefinition.fields:type_name -> query.Field
+ 168, // 0: tabletmanagerdata.TableDefinition.fields:type_name -> query.Field
2, // 1: tabletmanagerdata.SchemaDefinition.table_definitions:type_name -> tabletmanagerdata.TableDefinition
3, // 2: tabletmanagerdata.SchemaChangeResult.before_schema:type_name -> tabletmanagerdata.SchemaDefinition
3, // 3: tabletmanagerdata.SchemaChangeResult.after_schema:type_name -> tabletmanagerdata.SchemaDefinition
- 146, // 4: tabletmanagerdata.UserPermission.privileges:type_name -> tabletmanagerdata.UserPermission.PrivilegesEntry
- 147, // 5: tabletmanagerdata.DbPermission.privileges:type_name -> tabletmanagerdata.DbPermission.PrivilegesEntry
+ 147, // 4: tabletmanagerdata.UserPermission.privileges:type_name -> tabletmanagerdata.UserPermission.PrivilegesEntry
+ 148, // 5: tabletmanagerdata.DbPermission.privileges:type_name -> tabletmanagerdata.DbPermission.PrivilegesEntry
5, // 6: tabletmanagerdata.Permissions.user_permissions:type_name -> tabletmanagerdata.UserPermission
6, // 7: tabletmanagerdata.Permissions.db_permissions:type_name -> tabletmanagerdata.DbPermission
- 148, // 8: tabletmanagerdata.ExecuteHookRequest.extra_env:type_name -> tabletmanagerdata.ExecuteHookRequest.ExtraEnvEntry
+ 149, // 8: tabletmanagerdata.ExecuteHookRequest.extra_env:type_name -> tabletmanagerdata.ExecuteHookRequest.ExtraEnvEntry
3, // 9: tabletmanagerdata.GetSchemaResponse.schema_definition:type_name -> tabletmanagerdata.SchemaDefinition
7, // 10: tabletmanagerdata.GetPermissionsResponse.permissions:type_name -> tabletmanagerdata.Permissions
- 149, // 11: tabletmanagerdata.GetGlobalStatusVarsResponse.status_values:type_name -> tabletmanagerdata.GetGlobalStatusVarsResponse.StatusValuesEntry
- 168, // 12: tabletmanagerdata.ChangeTypeRequest.tablet_type:type_name -> topodata.TabletType
+ 150, // 11: tabletmanagerdata.GetGlobalStatusVarsResponse.status_values:type_name -> tabletmanagerdata.GetGlobalStatusVarsResponse.StatusValuesEntry
+ 169, // 12: tabletmanagerdata.ChangeTypeRequest.tablet_type:type_name -> topodata.TabletType
4, // 13: tabletmanagerdata.PreflightSchemaResponse.change_results:type_name -> tabletmanagerdata.SchemaChangeResult
3, // 14: tabletmanagerdata.ApplySchemaRequest.before_schema:type_name -> tabletmanagerdata.SchemaDefinition
3, // 15: tabletmanagerdata.ApplySchemaRequest.after_schema:type_name -> tabletmanagerdata.SchemaDefinition
3, // 16: tabletmanagerdata.ApplySchemaResponse.before_schema:type_name -> tabletmanagerdata.SchemaDefinition
3, // 17: tabletmanagerdata.ApplySchemaResponse.after_schema:type_name -> tabletmanagerdata.SchemaDefinition
- 169, // 18: tabletmanagerdata.ExecuteQueryRequest.caller_id:type_name -> vtrpc.CallerID
- 170, // 19: tabletmanagerdata.ExecuteQueryResponse.result:type_name -> query.QueryResult
- 170, // 20: tabletmanagerdata.ExecuteFetchAsDbaResponse.result:type_name -> query.QueryResult
- 170, // 21: tabletmanagerdata.ExecuteMultiFetchAsDbaResponse.results:type_name -> query.QueryResult
- 170, // 22: tabletmanagerdata.ExecuteFetchAsAllPrivsResponse.result:type_name -> query.QueryResult
- 170, // 23: tabletmanagerdata.ExecuteFetchAsAppResponse.result:type_name -> query.QueryResult
- 171, // 24: tabletmanagerdata.GetUnresolvedTransactionsResponse.transactions:type_name -> query.TransactionMetadata
- 171, // 25: tabletmanagerdata.ReadTransactionResponse.transaction:type_name -> query.TransactionMetadata
- 172, // 26: tabletmanagerdata.MysqlHostMetricsResponse.HostMetrics:type_name -> mysqlctl.HostMetricsResponse
- 173, // 27: tabletmanagerdata.ReplicationStatusResponse.status:type_name -> replicationdata.Status
- 174, // 28: tabletmanagerdata.PrimaryStatusResponse.status:type_name -> replicationdata.PrimaryStatus
- 170, // 29: tabletmanagerdata.VReplicationExecResponse.result:type_name -> query.QueryResult
- 175, // 30: tabletmanagerdata.PopulateReparentJournalRequest.primary_alias:type_name -> topodata.TabletAlias
- 175, // 31: tabletmanagerdata.InitReplicaRequest.parent:type_name -> topodata.TabletAlias
- 174, // 32: tabletmanagerdata.DemotePrimaryResponse.primary_status:type_name -> replicationdata.PrimaryStatus
- 176, // 33: tabletmanagerdata.FullStatusResponse.status:type_name -> replicationdata.FullStatus
- 175, // 34: tabletmanagerdata.SetReplicationSourceRequest.parent:type_name -> topodata.TabletAlias
- 175, // 35: tabletmanagerdata.ReplicaWasRestartedRequest.parent:type_name -> topodata.TabletAlias
- 177, // 36: tabletmanagerdata.StopReplicationAndGetStatusRequest.stop_replication_mode:type_name -> replicationdata.StopReplicationMode
- 178, // 37: tabletmanagerdata.StopReplicationAndGetStatusResponse.status:type_name -> replicationdata.StopReplicationStatus
- 179, // 38: tabletmanagerdata.BackupResponse.event:type_name -> logutil.Event
- 180, // 39: tabletmanagerdata.RestoreFromBackupRequest.backup_time:type_name -> vttime.Time
- 180, // 40: tabletmanagerdata.RestoreFromBackupRequest.restore_to_timestamp:type_name -> vttime.Time
- 179, // 41: tabletmanagerdata.RestoreFromBackupResponse.event:type_name -> logutil.Event
- 181, // 42: tabletmanagerdata.CreateVReplicationWorkflowRequest.binlog_source:type_name -> binlogdata.BinlogSource
- 168, // 43: tabletmanagerdata.CreateVReplicationWorkflowRequest.tablet_types:type_name -> topodata.TabletType
+ 170, // 18: tabletmanagerdata.ExecuteQueryRequest.caller_id:type_name -> vtrpc.CallerID
+ 171, // 19: tabletmanagerdata.ExecuteQueryResponse.result:type_name -> query.QueryResult
+ 171, // 20: tabletmanagerdata.ExecuteFetchAsDbaResponse.result:type_name -> query.QueryResult
+ 171, // 21: tabletmanagerdata.ExecuteMultiFetchAsDbaResponse.results:type_name -> query.QueryResult
+ 171, // 22: tabletmanagerdata.ExecuteFetchAsAllPrivsResponse.result:type_name -> query.QueryResult
+ 171, // 23: tabletmanagerdata.ExecuteFetchAsAppResponse.result:type_name -> query.QueryResult
+ 172, // 24: tabletmanagerdata.GetUnresolvedTransactionsResponse.transactions:type_name -> query.TransactionMetadata
+ 172, // 25: tabletmanagerdata.ReadTransactionResponse.transaction:type_name -> query.TransactionMetadata
+ 173, // 26: tabletmanagerdata.MysqlHostMetricsResponse.HostMetrics:type_name -> mysqlctl.HostMetricsResponse
+ 174, // 27: tabletmanagerdata.ReplicationStatusResponse.status:type_name -> replicationdata.Status
+ 175, // 28: tabletmanagerdata.PrimaryStatusResponse.status:type_name -> replicationdata.PrimaryStatus
+ 171, // 29: tabletmanagerdata.VReplicationExecResponse.result:type_name -> query.QueryResult
+ 176, // 30: tabletmanagerdata.PopulateReparentJournalRequest.primary_alias:type_name -> topodata.TabletAlias
+ 176, // 31: tabletmanagerdata.InitReplicaRequest.parent:type_name -> topodata.TabletAlias
+ 175, // 32: tabletmanagerdata.DemotePrimaryResponse.primary_status:type_name -> replicationdata.PrimaryStatus
+ 177, // 33: tabletmanagerdata.FullStatusResponse.status:type_name -> replicationdata.FullStatus
+ 176, // 34: tabletmanagerdata.SetReplicationSourceRequest.parent:type_name -> topodata.TabletAlias
+ 176, // 35: tabletmanagerdata.ReplicaWasRestartedRequest.parent:type_name -> topodata.TabletAlias
+ 178, // 36: tabletmanagerdata.StopReplicationAndGetStatusRequest.stop_replication_mode:type_name -> replicationdata.StopReplicationMode
+ 179, // 37: tabletmanagerdata.StopReplicationAndGetStatusResponse.status:type_name -> replicationdata.StopReplicationStatus
+ 180, // 38: tabletmanagerdata.BackupResponse.event:type_name -> logutil.Event
+ 181, // 39: tabletmanagerdata.RestoreFromBackupRequest.backup_time:type_name -> vttime.Time
+ 181, // 40: tabletmanagerdata.RestoreFromBackupRequest.restore_to_timestamp:type_name -> vttime.Time
+ 180, // 41: tabletmanagerdata.RestoreFromBackupResponse.event:type_name -> logutil.Event
+ 182, // 42: tabletmanagerdata.CreateVReplicationWorkflowRequest.binlog_source:type_name -> binlogdata.BinlogSource
+ 169, // 43: tabletmanagerdata.CreateVReplicationWorkflowRequest.tablet_types:type_name -> topodata.TabletType
0, // 44: tabletmanagerdata.CreateVReplicationWorkflowRequest.tablet_selection_preference:type_name -> tabletmanagerdata.TabletSelectionPreference
- 182, // 45: tabletmanagerdata.CreateVReplicationWorkflowRequest.workflow_type:type_name -> binlogdata.VReplicationWorkflowType
- 183, // 46: tabletmanagerdata.CreateVReplicationWorkflowRequest.workflow_sub_type:type_name -> binlogdata.VReplicationWorkflowSubType
- 170, // 47: tabletmanagerdata.CreateVReplicationWorkflowResponse.result:type_name -> query.QueryResult
- 150, // 48: tabletmanagerdata.DeleteTableDataRequest.table_filters:type_name -> tabletmanagerdata.DeleteTableDataRequest.TableFiltersEntry
- 170, // 49: tabletmanagerdata.DeleteVReplicationWorkflowResponse.result:type_name -> query.QueryResult
- 184, // 50: tabletmanagerdata.ReadVReplicationWorkflowsRequest.include_states:type_name -> binlogdata.VReplicationWorkflowState
- 184, // 51: tabletmanagerdata.ReadVReplicationWorkflowsRequest.exclude_states:type_name -> binlogdata.VReplicationWorkflowState
+ 183, // 45: tabletmanagerdata.CreateVReplicationWorkflowRequest.workflow_type:type_name -> binlogdata.VReplicationWorkflowType
+ 184, // 46: tabletmanagerdata.CreateVReplicationWorkflowRequest.workflow_sub_type:type_name -> binlogdata.VReplicationWorkflowSubType
+ 171, // 47: tabletmanagerdata.CreateVReplicationWorkflowResponse.result:type_name -> query.QueryResult
+ 151, // 48: tabletmanagerdata.DeleteTableDataRequest.table_filters:type_name -> tabletmanagerdata.DeleteTableDataRequest.TableFiltersEntry
+ 171, // 49: tabletmanagerdata.DeleteVReplicationWorkflowResponse.result:type_name -> query.QueryResult
+ 185, // 50: tabletmanagerdata.ReadVReplicationWorkflowsRequest.include_states:type_name -> binlogdata.VReplicationWorkflowState
+ 185, // 51: tabletmanagerdata.ReadVReplicationWorkflowsRequest.exclude_states:type_name -> binlogdata.VReplicationWorkflowState
125, // 52: tabletmanagerdata.ReadVReplicationWorkflowsResponse.workflows:type_name -> tabletmanagerdata.ReadVReplicationWorkflowResponse
- 168, // 53: tabletmanagerdata.ReadVReplicationWorkflowResponse.tablet_types:type_name -> topodata.TabletType
+ 169, // 53: tabletmanagerdata.ReadVReplicationWorkflowResponse.tablet_types:type_name -> topodata.TabletType
0, // 54: tabletmanagerdata.ReadVReplicationWorkflowResponse.tablet_selection_preference:type_name -> tabletmanagerdata.TabletSelectionPreference
- 182, // 55: tabletmanagerdata.ReadVReplicationWorkflowResponse.workflow_type:type_name -> binlogdata.VReplicationWorkflowType
- 183, // 56: tabletmanagerdata.ReadVReplicationWorkflowResponse.workflow_sub_type:type_name -> binlogdata.VReplicationWorkflowSubType
- 151, // 57: tabletmanagerdata.ReadVReplicationWorkflowResponse.streams:type_name -> tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream
- 152, // 58: tabletmanagerdata.ReadVReplicationWorkflowResponse.config_overrides:type_name -> tabletmanagerdata.ReadVReplicationWorkflowResponse.ConfigOverridesEntry
+ 183, // 55: tabletmanagerdata.ReadVReplicationWorkflowResponse.workflow_type:type_name -> binlogdata.VReplicationWorkflowType
+ 184, // 56: tabletmanagerdata.ReadVReplicationWorkflowResponse.workflow_sub_type:type_name -> binlogdata.VReplicationWorkflowSubType
+ 152, // 57: tabletmanagerdata.ReadVReplicationWorkflowResponse.streams:type_name -> tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream
+ 153, // 58: tabletmanagerdata.ReadVReplicationWorkflowResponse.config_overrides:type_name -> tabletmanagerdata.ReadVReplicationWorkflowResponse.ConfigOverridesEntry
133, // 59: tabletmanagerdata.VDiffRequest.options:type_name -> tabletmanagerdata.VDiffOptions
- 170, // 60: tabletmanagerdata.VDiffResponse.output:type_name -> query.QueryResult
+ 171, // 60: tabletmanagerdata.VDiffResponse.output:type_name -> query.QueryResult
130, // 61: tabletmanagerdata.VDiffOptions.picker_options:type_name -> tabletmanagerdata.VDiffPickerOptions
132, // 62: tabletmanagerdata.VDiffOptions.core_options:type_name -> tabletmanagerdata.VDiffCoreOptions
131, // 63: tabletmanagerdata.VDiffOptions.report_options:type_name -> tabletmanagerdata.VDiffReportOptions
- 168, // 64: tabletmanagerdata.UpdateVReplicationWorkflowRequest.tablet_types:type_name -> topodata.TabletType
- 0, // 65: tabletmanagerdata.UpdateVReplicationWorkflowRequest.tablet_selection_preference:type_name -> tabletmanagerdata.TabletSelectionPreference
- 185, // 66: tabletmanagerdata.UpdateVReplicationWorkflowRequest.on_ddl:type_name -> binlogdata.OnDDLAction
- 184, // 67: tabletmanagerdata.UpdateVReplicationWorkflowRequest.state:type_name -> binlogdata.VReplicationWorkflowState
- 153, // 68: tabletmanagerdata.UpdateVReplicationWorkflowRequest.config_overrides:type_name -> tabletmanagerdata.UpdateVReplicationWorkflowRequest.ConfigOverridesEntry
- 170, // 69: tabletmanagerdata.UpdateVReplicationWorkflowResponse.result:type_name -> query.QueryResult
- 184, // 70: tabletmanagerdata.UpdateVReplicationWorkflowsRequest.state:type_name -> binlogdata.VReplicationWorkflowState
- 170, // 71: tabletmanagerdata.UpdateVReplicationWorkflowsResponse.result:type_name -> query.QueryResult
- 155, // 72: tabletmanagerdata.CheckThrottlerResponse.metrics:type_name -> tabletmanagerdata.CheckThrottlerResponse.MetricsEntry
- 1, // 73: tabletmanagerdata.CheckThrottlerResponse.response_code:type_name -> tabletmanagerdata.CheckThrottlerResponseCode
- 157, // 74: tabletmanagerdata.GetThrottlerStatusResponse.aggregated_metrics:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.AggregatedMetricsEntry
- 158, // 75: tabletmanagerdata.GetThrottlerStatusResponse.metric_thresholds:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.MetricThresholdsEntry
- 160, // 76: tabletmanagerdata.GetThrottlerStatusResponse.metrics_health:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.MetricsHealthEntry
- 161, // 77: tabletmanagerdata.GetThrottlerStatusResponse.throttled_apps:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.ThrottledAppsEntry
- 162, // 78: tabletmanagerdata.GetThrottlerStatusResponse.app_checked_metrics:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.AppCheckedMetricsEntry
- 164, // 79: tabletmanagerdata.GetThrottlerStatusResponse.recent_apps:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.RecentAppsEntry
- 165, // 80: tabletmanagerdata.ChangeTagsRequest.tags:type_name -> tabletmanagerdata.ChangeTagsRequest.TagsEntry
- 166, // 81: tabletmanagerdata.ChangeTagsResponse.tags:type_name -> tabletmanagerdata.ChangeTagsResponse.TagsEntry
- 181, // 82: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.bls:type_name -> binlogdata.BinlogSource
- 180, // 83: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.time_updated:type_name -> vttime.Time
- 180, // 84: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.transaction_timestamp:type_name -> vttime.Time
- 184, // 85: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.state:type_name -> binlogdata.VReplicationWorkflowState
- 180, // 86: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.time_heartbeat:type_name -> vttime.Time
- 180, // 87: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.time_throttled:type_name -> vttime.Time
- 1, // 88: tabletmanagerdata.CheckThrottlerResponse.Metric.response_code:type_name -> tabletmanagerdata.CheckThrottlerResponseCode
- 154, // 89: tabletmanagerdata.CheckThrottlerResponse.MetricsEntry.value:type_name -> tabletmanagerdata.CheckThrottlerResponse.Metric
- 156, // 90: tabletmanagerdata.GetThrottlerStatusResponse.AggregatedMetricsEntry.value:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.MetricResult
- 180, // 91: tabletmanagerdata.GetThrottlerStatusResponse.MetricHealth.last_healthy_at:type_name -> vttime.Time
- 159, // 92: tabletmanagerdata.GetThrottlerStatusResponse.MetricsHealthEntry.value:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.MetricHealth
- 186, // 93: tabletmanagerdata.GetThrottlerStatusResponse.ThrottledAppsEntry.value:type_name -> topodata.ThrottledAppRule
- 180, // 94: tabletmanagerdata.GetThrottlerStatusResponse.RecentApp.checked_at:type_name -> vttime.Time
- 1, // 95: tabletmanagerdata.GetThrottlerStatusResponse.RecentApp.response_code:type_name -> tabletmanagerdata.CheckThrottlerResponseCode
- 163, // 96: tabletmanagerdata.GetThrottlerStatusResponse.RecentAppsEntry.value:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.RecentApp
- 97, // [97:97] is the sub-list for method output_type
- 97, // [97:97] is the sub-list for method input_type
- 97, // [97:97] is the sub-list for extension type_name
- 97, // [97:97] is the sub-list for extension extendee
- 0, // [0:97] is the sub-list for field type_name
+ 171, // 64: tabletmanagerdata.VDiffTableLastPK.target:type_name -> query.QueryResult
+ 171, // 65: tabletmanagerdata.VDiffTableLastPK.source:type_name -> query.QueryResult
+ 169, // 66: tabletmanagerdata.UpdateVReplicationWorkflowRequest.tablet_types:type_name -> topodata.TabletType
+ 0, // 67: tabletmanagerdata.UpdateVReplicationWorkflowRequest.tablet_selection_preference:type_name -> tabletmanagerdata.TabletSelectionPreference
+ 186, // 68: tabletmanagerdata.UpdateVReplicationWorkflowRequest.on_ddl:type_name -> binlogdata.OnDDLAction
+ 185, // 69: tabletmanagerdata.UpdateVReplicationWorkflowRequest.state:type_name -> binlogdata.VReplicationWorkflowState
+ 154, // 70: tabletmanagerdata.UpdateVReplicationWorkflowRequest.config_overrides:type_name -> tabletmanagerdata.UpdateVReplicationWorkflowRequest.ConfigOverridesEntry
+ 171, // 71: tabletmanagerdata.UpdateVReplicationWorkflowResponse.result:type_name -> query.QueryResult
+ 185, // 72: tabletmanagerdata.UpdateVReplicationWorkflowsRequest.state:type_name -> binlogdata.VReplicationWorkflowState
+ 171, // 73: tabletmanagerdata.UpdateVReplicationWorkflowsResponse.result:type_name -> query.QueryResult
+ 156, // 74: tabletmanagerdata.CheckThrottlerResponse.metrics:type_name -> tabletmanagerdata.CheckThrottlerResponse.MetricsEntry
+ 1, // 75: tabletmanagerdata.CheckThrottlerResponse.response_code:type_name -> tabletmanagerdata.CheckThrottlerResponseCode
+ 158, // 76: tabletmanagerdata.GetThrottlerStatusResponse.aggregated_metrics:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.AggregatedMetricsEntry
+ 159, // 77: tabletmanagerdata.GetThrottlerStatusResponse.metric_thresholds:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.MetricThresholdsEntry
+ 161, // 78: tabletmanagerdata.GetThrottlerStatusResponse.metrics_health:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.MetricsHealthEntry
+ 162, // 79: tabletmanagerdata.GetThrottlerStatusResponse.throttled_apps:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.ThrottledAppsEntry
+ 163, // 80: tabletmanagerdata.GetThrottlerStatusResponse.app_checked_metrics:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.AppCheckedMetricsEntry
+ 165, // 81: tabletmanagerdata.GetThrottlerStatusResponse.recent_apps:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.RecentAppsEntry
+ 166, // 82: tabletmanagerdata.ChangeTagsRequest.tags:type_name -> tabletmanagerdata.ChangeTagsRequest.TagsEntry
+ 167, // 83: tabletmanagerdata.ChangeTagsResponse.tags:type_name -> tabletmanagerdata.ChangeTagsResponse.TagsEntry
+ 182, // 84: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.bls:type_name -> binlogdata.BinlogSource
+ 181, // 85: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.time_updated:type_name -> vttime.Time
+ 181, // 86: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.transaction_timestamp:type_name -> vttime.Time
+ 185, // 87: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.state:type_name -> binlogdata.VReplicationWorkflowState
+ 181, // 88: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.time_heartbeat:type_name -> vttime.Time
+ 181, // 89: tabletmanagerdata.ReadVReplicationWorkflowResponse.Stream.time_throttled:type_name -> vttime.Time
+ 1, // 90: tabletmanagerdata.CheckThrottlerResponse.Metric.response_code:type_name -> tabletmanagerdata.CheckThrottlerResponseCode
+ 155, // 91: tabletmanagerdata.CheckThrottlerResponse.MetricsEntry.value:type_name -> tabletmanagerdata.CheckThrottlerResponse.Metric
+ 157, // 92: tabletmanagerdata.GetThrottlerStatusResponse.AggregatedMetricsEntry.value:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.MetricResult
+ 181, // 93: tabletmanagerdata.GetThrottlerStatusResponse.MetricHealth.last_healthy_at:type_name -> vttime.Time
+ 160, // 94: tabletmanagerdata.GetThrottlerStatusResponse.MetricsHealthEntry.value:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.MetricHealth
+ 187, // 95: tabletmanagerdata.GetThrottlerStatusResponse.ThrottledAppsEntry.value:type_name -> topodata.ThrottledAppRule
+ 181, // 96: tabletmanagerdata.GetThrottlerStatusResponse.RecentApp.checked_at:type_name -> vttime.Time
+ 1, // 97: tabletmanagerdata.GetThrottlerStatusResponse.RecentApp.response_code:type_name -> tabletmanagerdata.CheckThrottlerResponseCode
+ 164, // 98: tabletmanagerdata.GetThrottlerStatusResponse.RecentAppsEntry.value:type_name -> tabletmanagerdata.GetThrottlerStatusResponse.RecentApp
+ 99, // [99:99] is the sub-list for method output_type
+ 99, // [99:99] is the sub-list for method input_type
+ 99, // [99:99] is the sub-list for extension type_name
+ 99, // [99:99] is the sub-list for extension extendee
+ 0, // [0:99] is the sub-list for field type_name
}
func init() { file_tabletmanagerdata_proto_init() }
@@ -9590,14 +9655,15 @@ func file_tabletmanagerdata_proto_init() {
file_tabletmanagerdata_proto_msgTypes[108].OneofWrappers = []any{}
file_tabletmanagerdata_proto_msgTypes[130].OneofWrappers = []any{}
file_tabletmanagerdata_proto_msgTypes[132].OneofWrappers = []any{}
- file_tabletmanagerdata_proto_msgTypes[134].OneofWrappers = []any{}
+ file_tabletmanagerdata_proto_msgTypes[133].OneofWrappers = []any{}
+ file_tabletmanagerdata_proto_msgTypes[135].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_tabletmanagerdata_proto_rawDesc,
NumEnums: 2,
- NumMessages: 165,
+ NumMessages: 166,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/go/vt/proto/tabletmanagerdata/tabletmanagerdata_vtproto.pb.go b/go/vt/proto/tabletmanagerdata/tabletmanagerdata_vtproto.pb.go
index 9f6b0df851b..eaedd9c4bc7 100644
--- a/go/vt/proto/tabletmanagerdata/tabletmanagerdata_vtproto.pb.go
+++ b/go/vt/proto/tabletmanagerdata/tabletmanagerdata_vtproto.pb.go
@@ -2579,6 +2579,24 @@ func (m *VDiffOptions) CloneMessageVT() proto.Message {
return m.CloneVT()
}
+func (m *VDiffTableLastPK) CloneVT() *VDiffTableLastPK {
+ if m == nil {
+ return (*VDiffTableLastPK)(nil)
+ }
+ r := new(VDiffTableLastPK)
+ r.Target = m.Target.CloneVT()
+ r.Source = m.Source.CloneVT()
+ if len(m.unknownFields) > 0 {
+ r.unknownFields = make([]byte, len(m.unknownFields))
+ copy(r.unknownFields, m.unknownFields)
+ }
+ return r
+}
+
+func (m *VDiffTableLastPK) CloneMessageVT() proto.Message {
+ return m.CloneVT()
+}
+
func (m *UpdateVReplicationWorkflowRequest) CloneVT() *UpdateVReplicationWorkflowRequest {
if m == nil {
return (*UpdateVReplicationWorkflowRequest)(nil)
@@ -9350,6 +9368,59 @@ func (m *VDiffOptions) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
+func (m *VDiffTableLastPK) MarshalVT() (dAtA []byte, err error) {
+ if m == nil {
+ return nil, nil
+ }
+ size := m.SizeVT()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBufferVT(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VDiffTableLastPK) MarshalToVT(dAtA []byte) (int, error) {
+ size := m.SizeVT()
+ return m.MarshalToSizedBufferVT(dAtA[:size])
+}
+
+func (m *VDiffTableLastPK) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
+ if m == nil {
+ return 0, nil
+ }
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.unknownFields != nil {
+ i -= len(m.unknownFields)
+ copy(dAtA[i:], m.unknownFields)
+ }
+ if m.Source != nil {
+ size, err := m.Source.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Target != nil {
+ size, err := m.Target.MarshalToSizedBufferVT(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = protohelpers.EncodeVarint(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
func (m *UpdateVReplicationWorkflowRequest) MarshalVT() (dAtA []byte, err error) {
if m == nil {
return nil, nil
@@ -12772,6 +12843,24 @@ func (m *VDiffOptions) SizeVT() (n int) {
return n
}
+func (m *VDiffTableLastPK) SizeVT() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Target != nil {
+ l = m.Target.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ if m.Source != nil {
+ l = m.Source.SizeVT()
+ n += 1 + l + protohelpers.SizeOfVarint(uint64(l))
+ }
+ n += len(m.unknownFields)
+ return n
+}
+
func (m *UpdateVReplicationWorkflowRequest) SizeVT() (n int) {
if m == nil {
return 0
@@ -27261,6 +27350,129 @@ func (m *VDiffOptions) UnmarshalVT(dAtA []byte) error {
}
return nil
}
+func (m *VDiffTableLastPK) UnmarshalVT(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VDiffTableLastPK: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VDiffTableLastPK: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &query.QueryResult{}
+ }
+ if err := m.Target.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return protohelpers.ErrIntOverflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Source == nil {
+ m.Source = &query.QueryResult{}
+ }
+ if err := m.Source.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := protohelpers.Skip(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return protohelpers.ErrInvalidLength
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *UpdateVReplicationWorkflowRequest) UnmarshalVT(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
diff --git a/go/vt/vterrors/code.go b/go/vt/vterrors/code.go
index 0ca275b71fc..df19fcbd408 100644
--- a/go/vt/vterrors/code.go
+++ b/go/vt/vterrors/code.go
@@ -243,8 +243,15 @@ func errorWithoutState(id string, code vtrpcpb.Code, short, long string) func(ar
func errorWithState(id string, code vtrpcpb.Code, state State, short, long string) func(args ...any) *VitessError {
return func(args ...any) *VitessError {
+ var err error
+ if len(args) != 0 {
+ err = NewErrorf(code, state, id+": "+short, args...)
+ } else {
+ err = NewError(code, state, id+": "+short)
+ }
+
return &VitessError{
- Err: NewErrorf(code, state, id+": "+short, args...),
+ Err: err,
Description: long,
ID: id,
State: state,
diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go
index 74bfb710582..8b06870e7e1 100644
--- a/go/vt/vtgate/executor_test.go
+++ b/go/vt/vtgate/executor_test.go
@@ -2672,10 +2672,12 @@ func TestExecutorShowVitessMigrations(t *testing.T) {
func TestExecutorDescHash(t *testing.T) {
executor, _, _, _, ctx := createExecutorEnv(t)
-
- showQuery := "desc hash_index"
session := econtext.NewSafeSession(&vtgatepb.Session{TargetString: "TestExecutor"})
- _, err := executor.Execute(ctx, nil, "", session, showQuery, nil)
+
+ _, err := executor.Execute(ctx, nil, "", session, "desc hash_index", nil)
+ require.EqualError(t, err, "VT05004: table 'hash_index' does not exist")
+
+ _, err = executor.Execute(ctx, nil, "", session, "desc music", nil)
require.NoError(t, err)
}
diff --git a/go/vt/vtgate/planbuilder/plan_test.go b/go/vt/vtgate/planbuilder/plan_test.go
index f3bed93e3c8..8a8d55279a6 100644
--- a/go/vt/vtgate/planbuilder/plan_test.go
+++ b/go/vt/vtgate/planbuilder/plan_test.go
@@ -577,10 +577,10 @@ func (s *planTestSuite) TestOtherPlanningFromFile() {
vw, err := vschemawrapper.NewVschemaWrapper(env, vschema, TestBuilder)
require.NoError(s.T(), err)
+ s.testFile("other_read_cases.json", vw, false)
+
vw.Vcursor.SetTarget("main")
vw.Keyspace = &vindexes.Keyspace{Name: "main"}
-
- s.testFile("other_read_cases.json", vw, false)
s.testFile("other_admin_cases.json", vw, false)
}
diff --git a/go/vt/vtgate/planbuilder/testdata/other_read_cases.json b/go/vt/vtgate/planbuilder/testdata/other_read_cases.json
index 2258bcd768c..1a7c9ddac2a 100644
--- a/go/vt/vtgate/planbuilder/testdata/other_read_cases.json
+++ b/go/vt/vtgate/planbuilder/testdata/other_read_cases.json
@@ -8,24 +8,24 @@
"Instructions": {
"OperatorType": "Send",
"Keyspace": {
- "Name": "main",
- "Sharded": false
+ "Name": "user",
+ "Sharded": true
},
"TargetDestination": "AnyShard()",
"Query": "explain select * from `user`",
"SingleShardOnly": true
},
"TablesUsed": [
- "main.user"
+ "user.user"
]
}
},
{
"comment": "Analyze statement",
- "query": "analyze table t1",
+ "query": "analyze table main.t1",
"plan": {
"QueryType": "ANALYZE",
- "Original": "analyze table t1",
+ "Original": "analyze table main.t1",
"Instructions": {
"OperatorType": "Send",
"Keyspace": {
@@ -42,43 +42,43 @@
},
{
"comment": "Describe statement",
- "query": "describe select * from t",
+ "query": "describe select * from user",
"plan": {
"QueryType": "EXPLAIN",
- "Original": "describe select * from t",
+ "Original": "describe select * from user",
"Instructions": {
"OperatorType": "Send",
"Keyspace": {
- "Name": "main",
- "Sharded": false
+ "Name": "user",
+ "Sharded": true
},
"TargetDestination": "AnyShard()",
- "Query": "explain select * from t",
+ "Query": "explain select * from `user`",
"SingleShardOnly": true
},
"TablesUsed": [
- "main.t"
+ "user.user"
]
}
},
{
"comment": "Desc statement",
- "query": "desc select * from t",
+ "query": "desc select * from user",
"plan": {
"QueryType": "EXPLAIN",
- "Original": "desc select * from t",
+ "Original": "desc select * from user",
"Instructions": {
"OperatorType": "Send",
"Keyspace": {
- "Name": "main",
- "Sharded": false
+ "Name": "user",
+ "Sharded": true
},
"TargetDestination": "AnyShard()",
- "Query": "explain select * from t",
+ "Query": "explain select * from `user`",
"SingleShardOnly": true
},
"TablesUsed": [
- "main.t"
+ "user.user"
]
}
},
@@ -167,5 +167,31 @@
"main.administrable_role_authorizations"
]
}
+ },
+ {
+ "comment": "describe table without qualifier",
+ "query": "describe user",
+ "plan": {
+ "QueryType": "EXPLAIN",
+ "Original": "describe user",
+ "Instructions": {
+ "OperatorType": "Send",
+ "Keyspace": {
+ "Name": "user",
+ "Sharded": true
+ },
+ "TargetDestination": "AnyShard()",
+ "Query": "explain `user`",
+ "SingleShardOnly": true
+ },
+ "TablesUsed": [
+ "user.user"
+ ]
+ }
+ },
+ {
+ "comment": "describe table does not exists",
+ "query": "describe unknown_table",
+ "plan": "table unknown_table not found"
}
]
diff --git a/go/vt/vtgate/planbuilder/vexplain.go b/go/vt/vtgate/planbuilder/vexplain.go
index 7aed1e48884..a12139c3068 100644
--- a/go/vt/vtgate/planbuilder/vexplain.go
+++ b/go/vt/vtgate/planbuilder/vexplain.go
@@ -55,7 +55,7 @@ func buildVExplainPlan(
func explainTabPlan(explain *sqlparser.ExplainTab, vschema plancontext.VSchema) (*planResult, error) {
var keyspace *vindexes.Keyspace
- var destination key.Destination
+ var dest key.Destination
if sqlparser.SystemSchema(explain.Table.Qualifier.String()) {
var err error
@@ -64,30 +64,26 @@ func explainTabPlan(explain *sqlparser.ExplainTab, vschema plancontext.VSchema)
return nil, err
}
} else {
+ var tbl *vindexes.Table
var err error
- var ks string
- _, _, ks, _, destination, err = vschema.FindTableOrVindex(explain.Table)
+ tbl, _, _, _, dest, err = vschema.FindTableOrVindex(explain.Table)
if err != nil {
return nil, err
}
- explain.Table.Qualifier = sqlparser.NewIdentifierCS("")
-
- keyspace, err = vschema.FindKeyspace(ks)
- if err != nil {
- return nil, err
- }
- if keyspace == nil {
- return nil, vterrors.VT14004(ks)
+ if tbl == nil {
+ return nil, vterrors.VT05004(explain.Table.Name.String())
}
+ keyspace = tbl.Keyspace
+ explain.Table = sqlparser.NewTableName(tbl.Name.String())
}
- if destination == nil {
- destination = key.DestinationAnyShard{}
+ if dest == nil {
+ dest = key.DestinationAnyShard{}
}
return newPlanResult(&engine.Send{
Keyspace: keyspace,
- TargetDestination: destination,
+ TargetDestination: dest,
Query: sqlparser.String(explain),
SingleShardOnly: true,
}, singleTable(keyspace.Name, explain.Table.Name.String())), nil
diff --git a/go/vt/vttablet/tabletmanager/vdiff/engine_test.go b/go/vt/vttablet/tabletmanager/vdiff/engine_test.go
index 61d713a8e58..374756418c6 100644
--- a/go/vt/vttablet/tabletmanager/vdiff/engine_test.go
+++ b/go/vt/vttablet/tabletmanager/vdiff/engine_test.go
@@ -139,7 +139,7 @@ func TestVDiff(t *testing.T) {
"lastpk|mismatch|report",
"varbinary|int64|json",
),
- `fields:{name:"c1" type:INT64 table:"t1" org_table:"t1" database:"vt_customer" org_name:"c1" column_length:20 charset:63 flags:53251} rows:{lengths:1 values:"1"}|0|{}`,
+ `target:{fields:{name:"c1" type:INT64 table:"t1" org_table:"t1" database:"vt_customer" org_name:"c1" column_length:20 charset:63 flags:53251} rows:{lengths:1 values:"1"}}|0|{}`,
), nil)
vdenv.dbClient.ExpectRequest(fmt.Sprintf("select column_name as column_name, collation_name as collation_name from information_schema.columns where table_schema='%s' and table_name='t1' and column_name in ('c1')", vdiffDBName), sqltypes.MakeTestResult(sqltypes.MakeTestFields(
"collation_name",
@@ -159,7 +159,7 @@ func TestVDiff(t *testing.T) {
"lastpk|mismatch|report",
"varbinary|int64|json",
),
- `fields:{name:"c1" type:INT64 table:"t1" org_table:"t1" database:"vt_customer" org_name:"c1" column_length:20 charset:63 flags:53251} rows:{lengths:1 values:"1"}|0|{"TableName": "t1", "MatchingRows": 1, "ProcessedRows": 1, "MismatchedRows": 0, "ExtraRowsSource": 0, "ExtraRowsTarget": 0}`,
+ `target:{fields:{name:"c1" type:INT64 table:"t1" org_table:"t1" database:"vt_customer" org_name:"c1" column_length:20 charset:63 flags:53251} rows:{lengths:1 values:"1"}}|0|{}`,
), nil)
vdenv.dbClient.ExpectRequest("update _vt.vdiff_table set table_rows = 1 where vdiff_id = 1 and table_name = 't1'", singleRowAffected, nil)
@@ -169,7 +169,7 @@ func TestVDiff(t *testing.T) {
"lastpk|mismatch|report",
"varbinary|int64|json",
),
- `fields:{name:"c1" type:INT64 table:"t1" org_table:"t1" database:"vt_customer" org_name:"c1" column_length:20 charset:63 flags:53251} rows:{lengths:1 values:"1"}|0|{"TableName": "t1", "MatchingRows": 1, "ProcessedRows": 1, "MismatchedRows": 0, "ExtraRowsSource": 0, "ExtraRowsTarget": 0}`,
+ `target:{fields:{name:"c1" type:INT64 table:"t1" org_table:"t1" database:"vt_customer" org_name:"c1" column_length:20 charset:63 flags:53251} rows:{lengths:1 values:"1"}}|0|{}`,
), nil)
vdenv.dbClient.ExpectRequest("update _vt.vdiff_table set state = 'started' where vdiff_id = 1 and table_name = 't1'", singleRowAffected, nil)
vdenv.dbClient.ExpectRequest(`insert into _vt.vdiff_log(vdiff_id, message) values (1, 'started: table \'t1\'')`, singleRowAffected, nil)
@@ -185,7 +185,7 @@ func TestVDiff(t *testing.T) {
"lastpk|mismatch|report",
"varbinary|int64|json",
),
- `fields:{name:"c1" type:INT64 table:"t1" org_table:"t1" database:"vt_customer" org_name:"c1" column_length:20 charset:63 flags:53251} rows:{lengths:1 values:"1"}|0|{}`,
+ `target:{fields:{name:"c1" type:INT64 table:"t1" org_table:"t1" database:"vt_customer" org_name:"c1" column_length:20 charset:63 flags:53251} rows:{lengths:1 values:"1"}}|0|{}`,
), nil)
vdenv.dbClient.ExpectRequest(`update _vt.vdiff_table set rows_compared = 0, report = '{"TableName":"t1","ProcessedRows":0,"MatchingRows":0,"MismatchedRows":0,"ExtraRowsSource":0,"ExtraRowsTarget":0}' where vdiff_id = 1 and table_name = 't1'`, singleRowAffected, nil)
vdenv.dbClient.ExpectRequest(`update _vt.vdiff_table set state = 'completed', rows_compared = 0, report = '{"TableName":"t1","ProcessedRows":0,"MatchingRows":0,"MismatchedRows":0,"ExtraRowsSource":0,"ExtraRowsTarget":0}' where vdiff_id = 1 and table_name = 't1'`, singleRowAffected, nil)
diff --git a/go/vt/vttablet/tabletmanager/vdiff/framework_test.go b/go/vt/vttablet/tabletmanager/vdiff/framework_test.go
index 7d4cdb78c20..563741fcd23 100644
--- a/go/vt/vttablet/tabletmanager/vdiff/framework_test.go
+++ b/go/vt/vttablet/tabletmanager/vdiff/framework_test.go
@@ -678,5 +678,15 @@ func (tvde *testVDiffEnv) createController(t *testing.T, id int) *controller {
tvde.dbClient.ExpectRequest(fmt.Sprintf("select * from _vt.vdiff where id = %d", id), noResults, nil)
ct, err := newController(context.Background(), controllerQR.Named().Row(), tvde.dbClientFactory, tstenv.TopoServ, tvde.vde, tvde.opts)
require.NoError(t, err)
+ ct.sources = map[string]*migrationSource{
+ tstenv.ShardName: {
+ vrID: 1,
+ shardStreamer: &shardStreamer{
+ tablet: tvde.vde.thisTablet,
+ shard: tstenv.ShardName,
+ },
+ },
+ }
+ ct.sourceKeyspace = tstenv.KeyspaceName
return ct
}
diff --git a/go/vt/vttablet/tabletmanager/vdiff/table_differ.go b/go/vt/vttablet/tabletmanager/vdiff/table_differ.go
index 102d7535af9..1ebeab8ed8d 100644
--- a/go/vt/vttablet/tabletmanager/vdiff/table_differ.go
+++ b/go/vt/vttablet/tabletmanager/vdiff/table_differ.go
@@ -20,10 +20,12 @@ import (
"context"
"encoding/json"
"fmt"
+ "slices"
"strings"
"sync"
"time"
+ "golang.org/x/exp/maps"
"google.golang.org/protobuf/encoding/prototext"
"vitess.io/vitess/go/mysql/collations"
@@ -34,6 +36,7 @@ import (
"vitess.io/vitess/go/vt/concurrency"
"vitess.io/vitess/go/vt/discovery"
"vitess.io/vitess/go/vt/log"
+ "vitess.io/vitess/go/vt/mysqlctl"
"vitess.io/vitess/go/vt/sqlparser"
"vitess.io/vitess/go/vt/topo"
"vitess.io/vitess/go/vt/topo/topoproto"
@@ -86,9 +89,10 @@ type tableDiffer struct {
targetPrimitive engine.Primitive
// sourceQuery is computed from the associated query for this table in the vreplication workflow's Rule Filter
- sourceQuery string
- table *tabletmanagerdatapb.TableDefinition
- lastPK *querypb.QueryResult
+ sourceQuery string
+ table *tabletmanagerdatapb.TableDefinition
+ lastSourcePK *querypb.QueryResult
+ lastTargetPK *querypb.QueryResult
// wgShardStreamers is used, with a cancellable context, to wait for all shard streamers
// to finish after each diff is complete.
@@ -238,15 +242,9 @@ func (td *tableDiffer) selectTablets(ctx context.Context) error {
sourceCells := strings.Split(td.wd.opts.PickerOptions.SourceCell, ",")
targetCells := strings.Split(td.wd.opts.PickerOptions.TargetCell, ",")
- // For Mount+Migrate, the source tablets will be in a different
- // Vitess cluster with its own TopoServer.
- sourceTopoServer := td.wd.ct.ts
- if td.wd.ct.externalCluster != "" {
- extTS, err := td.wd.ct.ts.OpenExternalVitessClusterServer(ctx, td.wd.ct.externalCluster)
- if err != nil {
- return err
- }
- sourceTopoServer = extTS
+ sourceTopoServer, err := td.wd.getSourceTopoServer()
+ if err != nil {
+ return vterrors.Wrap(err, "failed to get source topo server")
}
tabletPickerOptions := discovery.TabletPickerOptions{}
wg.Add(1)
@@ -349,7 +347,7 @@ func (td *tableDiffer) startTargetDataStream(ctx context.Context) error {
ct := td.wd.ct
gtidch := make(chan string, 1)
ct.targetShardStreamer.result = make(chan *sqltypes.Result, 1)
- go td.streamOneShard(ctx, ct.targetShardStreamer, td.tablePlan.targetQuery, td.lastPK, gtidch)
+ go td.streamOneShard(ctx, ct.targetShardStreamer, td.tablePlan.targetQuery, td.lastTargetPK, gtidch)
gtid, ok := <-gtidch
if !ok {
log.Infof("streaming error: %v", ct.targetShardStreamer.err)
@@ -364,7 +362,7 @@ func (td *tableDiffer) startSourceDataStreams(ctx context.Context) error {
if err := td.forEachSource(func(source *migrationSource) error {
gtidch := make(chan string, 1)
source.result = make(chan *sqltypes.Result, 1)
- go td.streamOneShard(ctx, source.shardStreamer, td.tablePlan.sourceQuery, td.lastPK, gtidch)
+ go td.streamOneShard(ctx, source.shardStreamer, td.tablePlan.sourceQuery, td.lastSourcePK, gtidch)
gtid, ok := <-gtidch
if !ok {
@@ -721,32 +719,17 @@ func (td *tableDiffer) updateTableProgress(dbClient binlogplayer.DBClient, dr *D
if dr == nil {
return fmt.Errorf("cannot update progress with a nil diff report")
}
- var lastPK []byte
+
var err error
var query string
rpt, err := json.Marshal(dr)
if err != nil {
return err
}
- if lastRow != nil {
- lastPK, err = td.lastPKFromRow(lastRow)
- if err != nil {
- return err
- }
-
- if td.wd.opts.CoreOptions.MaxDiffSeconds > 0 {
- // Update the in-memory lastPK as well so that we can restart the table
- // diff if needed.
- lastpkpb := &querypb.QueryResult{}
- if err := prototext.Unmarshal(lastPK, lastpkpb); err != nil {
- return err
- }
- td.lastPK = lastpkpb
- }
- query, err = sqlparser.ParseAndBind(sqlUpdateTableProgress,
+ if lastRow == nil {
+ query, err = sqlparser.ParseAndBind(sqlUpdateTableNoProgress,
sqltypes.Int64BindVariable(dr.ProcessedRows),
- sqltypes.StringBindVariable(string(lastPK)),
sqltypes.StringBindVariable(string(rpt)),
sqltypes.Int64BindVariable(td.wd.ct.id),
sqltypes.StringBindVariable(td.table.Name),
@@ -755,8 +738,25 @@ func (td *tableDiffer) updateTableProgress(dbClient binlogplayer.DBClient, dr *D
return err
}
} else {
- query, err = sqlparser.ParseAndBind(sqlUpdateTableNoProgress,
+ lastPK := td.lastPKFromRow(lastRow)
+ if td.wd.opts.CoreOptions.MaxDiffSeconds > 0 {
+ // Update the in-memory lastPK as well so that we can restart the table
+ // diff if needed.
+ td.lastTargetPK = lastPK.Target
+ if lastPK.Source == nil {
+ // If the source PK is nil, we use the target value for both.
+ td.lastSourcePK = lastPK.Target
+ } else {
+ td.lastSourcePK = lastPK.Source
+ }
+ }
+ lastPKTxt, err := prototext.Marshal(lastPK)
+ if err != nil {
+ return vterrors.Wrapf(err, "failed to marshal lastpk value %+v for table %s", lastPK, td.table.Name)
+ }
+ query, err = sqlparser.ParseAndBind(sqlUpdateTableProgress,
sqltypes.Int64BindVariable(dr.ProcessedRows),
+ sqltypes.StringBindVariable(string(lastPKTxt)),
sqltypes.StringBindVariable(string(rpt)),
sqltypes.Int64BindVariable(td.wd.ct.id),
sqltypes.StringBindVariable(td.table.Name),
@@ -768,6 +768,7 @@ func (td *tableDiffer) updateTableProgress(dbClient binlogplayer.DBClient, dr *D
if _, err := dbClient.ExecuteFetch(query, 1); err != nil {
return err
}
+
td.wd.ct.TableDiffRowCounts.Add(td.table.Name, dr.ProcessedRows)
return nil
}
@@ -832,19 +833,30 @@ func updateTableMismatch(dbClient binlogplayer.DBClient, vdiffID int64, table st
return nil
}
-func (td *tableDiffer) lastPKFromRow(row []sqltypes.Value) ([]byte, error) {
- pkColCnt := len(td.tablePlan.pkCols)
- pkFields := make([]*querypb.Field, pkColCnt)
- pkVals := make([]sqltypes.Value, pkColCnt)
- for i, colIndex := range td.tablePlan.pkCols {
- pkFields[i] = td.tablePlan.table.Fields[colIndex]
- pkVals[i] = row[colIndex]
- }
- buf, err := prototext.Marshal(&querypb.QueryResult{
- Fields: pkFields,
- Rows: []*querypb.Row{sqltypes.RowToProto3(pkVals)},
- })
- return buf, err
+func (td *tableDiffer) lastPKFromRow(row []sqltypes.Value) *tabletmanagerdatapb.VDiffTableLastPK {
+ buildQR := func(pkCols []int) *querypb.QueryResult {
+ pkColCnt := len(pkCols)
+ pkFields := make([]*querypb.Field, pkColCnt)
+ pkVals := make([]sqltypes.Value, pkColCnt)
+ for i, colIndex := range pkCols {
+ pkFields[i] = td.tablePlan.table.Fields[colIndex]
+ pkVals[i] = row[colIndex]
+ }
+ return &querypb.QueryResult{
+ Fields: pkFields,
+ Rows: []*querypb.Row{sqltypes.RowToProto3(pkVals)},
+ }
+ }
+ lastPK := &tabletmanagerdatapb.VDiffTableLastPK{
+ Target: buildQR(td.tablePlan.pkCols),
+ }
+ // If the source and target PKs are different, we need to save the source PK
+ // as well. Otherwise the source will be nil which means that the target value
+ // should also be used for the source.
+ if !slices.Equal(td.tablePlan.pkCols, td.tablePlan.sourcePkCols) {
+ lastPK.Source = buildQR(td.tablePlan.sourcePkCols)
+ }
+ return lastPK
}
// If SourceTimeZone is defined in the BinlogSource (_vt.vreplication.source), the
@@ -893,6 +905,83 @@ func (td *tableDiffer) adjustForSourceTimeZone(targetSelectExprs sqlparser.Selec
return targetSelectExprs
}
+// getSourcePKCols populates the sourcePkCols field in the tablePlan.
+// We need this information in order to save the lastpk value for the
+// source if the PK columns differ between the source and target.
+func (td *tableDiffer) getSourcePKCols() error {
+ ctx, cancel := context.WithTimeout(td.wd.ct.vde.ctx, topo.RemoteOperationTimeout*3)
+ defer cancel()
+
+ // We use the first sourceShard as all of them should have the same schema.
+ if len(td.wd.ct.sources) == 0 {
+ return vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "no source shards found in %s keyspace",
+ td.wd.ct.sourceKeyspace)
+ }
+ sourceShardName := maps.Keys(td.wd.ct.sources)[0]
+ sourceTS, err := td.wd.getSourceTopoServer()
+ if err != nil {
+ return vterrors.Wrap(err, "failed to get source topo server")
+ }
+ sourceShard, err := sourceTS.GetShard(ctx, td.wd.ct.sourceKeyspace, sourceShardName)
+ if err != nil {
+ return vterrors.Wrapf(err, "failed to get source shard %s", sourceShardName)
+ }
+ if sourceShard.PrimaryAlias == nil {
+ return vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "source shard %s has no primary", sourceShardName)
+ }
+ sourceTablet, err := sourceTS.GetTablet(ctx, sourceShard.PrimaryAlias)
+ if err != nil {
+ return vterrors.Wrapf(err, "failed to get primary tablet in source shard %s/%s",
+ td.wd.ct.sourceKeyspace, sourceShardName)
+ }
+ sourceSchema, err := td.wd.ct.tmc.GetSchema(ctx, sourceTablet.Tablet, &tabletmanagerdatapb.GetSchemaRequest{
+ Tables: []string{td.table.Name},
+ })
+ if err != nil {
+ return vterrors.Wrapf(err, "failed to get the schema for table %s from source tablet %s",
+ td.table.Name, topoproto.TabletAliasString(sourceTablet.Tablet.Alias))
+ }
+ sourceTable := sourceSchema.TableDefinitions[0]
+ if len(sourceTable.PrimaryKeyColumns) == 0 {
+ // We use the columns from a PKE if there is one.
+ executeFetch := func(query string, maxrows int, wantfields bool) (*sqltypes.Result, error) {
+ res, err := td.wd.ct.tmc.ExecuteFetchAsApp(ctx, sourceTablet.Tablet, false, &tabletmanagerdatapb.ExecuteFetchAsAppRequest{
+ Query: []byte(query),
+ MaxRows: 1,
+ })
+ if err != nil {
+ return nil, vterrors.Wrapf(err, "failed to query the %s source tablet in order to get a primary key equivalent for the %s table",
+ topoproto.TabletAliasString(sourceTablet.Tablet.Alias), td.table.Name)
+ }
+ return sqltypes.Proto3ToResult(res), nil
+ }
+ pkeCols, _, err := mysqlctl.GetPrimaryKeyEquivalentColumns(ctx, executeFetch, sourceTablet.DbName(), td.table.Name)
+ if err != nil {
+ return vterrors.Wrapf(err, "failed to get a primary key equivalent for the %s table from source tablet %s",
+ td.table.Name, topoproto.TabletAliasString(sourceTablet.Tablet.Alias))
+ }
+ if len(pkeCols) > 0 {
+ sourceTable.PrimaryKeyColumns = pkeCols
+ } else {
+ // We use every column together as a substitute PK.
+ sourceTable.PrimaryKeyColumns = append(sourceTable.PrimaryKeyColumns, td.table.Columns...)
+ }
+ }
+
+ sourcePKColumns := make(map[string]struct{}, len(sourceTable.PrimaryKeyColumns))
+ td.tablePlan.sourcePkCols = make([]int, 0, len(sourceTable.PrimaryKeyColumns))
+ for _, pkc := range sourceTable.PrimaryKeyColumns {
+ sourcePKColumns[pkc] = struct{}{}
+ }
+ for i, pkc := range td.table.Columns {
+ if _, ok := sourcePKColumns[pkc]; ok {
+ td.tablePlan.sourcePkCols = append(td.tablePlan.sourcePkCols, i)
+ }
+ }
+
+ return nil
+}
+
func getColumnNameForSelectExpr(selectExpression sqlparser.SelectExpr) (string, error) {
aliasedExpr := selectExpression.(*sqlparser.AliasedExpr)
expr := aliasedExpr.Expr
diff --git a/go/vt/vttablet/tabletmanager/vdiff/table_differ_test.go b/go/vt/vttablet/tabletmanager/vdiff/table_differ_test.go
new file mode 100644
index 00000000000..03ba218cd66
--- /dev/null
+++ b/go/vt/vttablet/tabletmanager/vdiff/table_differ_test.go
@@ -0,0 +1,131 @@
+/*
+Copyright 2025 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package vdiff
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+
+ "vitess.io/vitess/go/sqltypes"
+ "vitess.io/vitess/go/stats"
+ "vitess.io/vitess/go/vt/binlog/binlogplayer"
+
+ querypb "vitess.io/vitess/go/vt/proto/query"
+ tabletmanagerdatapb "vitess.io/vitess/go/vt/proto/tabletmanagerdata"
+)
+
+func TestUpdateTableProgress(t *testing.T) {
+ wd := &workflowDiffer{
+ ct: &controller{
+ id: 1,
+ TableDiffRowCounts: stats.NewCountersWithSingleLabel("", "", "Rows"),
+ },
+ opts: &tabletmanagerdatapb.VDiffOptions{
+ CoreOptions: &tabletmanagerdatapb.VDiffCoreOptions{
+ MaxDiffSeconds: 100,
+ },
+ },
+ }
+ table := &tabletmanagerdatapb.TableDefinition{
+ Name: "test",
+ }
+ dr := &DiffReport{
+ TableName: table.Name,
+ ProcessedRows: 1e9,
+ }
+ queryTemplate := `update _vt.vdiff_table set rows_compared = 1000000000, lastpk = '%s', report = '{"TableName":"test","ProcessedRows":1000000000,"MatchingRows":0,"MismatchedRows":0,"ExtraRowsSource":0,"ExtraRowsTarget":0}' where vdiff_id = 1 and table_name = 'test'`
+
+ testCases := []struct {
+ name string
+ fields []*querypb.Field
+ pkCols []int
+ sourcePkCols []int
+ lastRow []sqltypes.Value
+ expectedLastPK string
+ wantErr bool
+ }{
+ {
+ name: "identical PKs",
+ fields: []*querypb.Field{
+ {
+ Name: "a", Type: sqltypes.Int64,
+ },
+ {
+ Name: "b", Type: sqltypes.Int64,
+ },
+ },
+ pkCols: []int{0, 1},
+ sourcePkCols: []int{0, 1},
+ lastRow: []sqltypes.Value{sqltypes.NewInt64(1), sqltypes.NewInt64(2)},
+ expectedLastPK: `target:{fields:{name:"a" type:INT64} fields:{name:"b" type:INT64} rows:{lengths:1 lengths:1 values:"12"}}`,
+ },
+ {
+ name: "more PK cols on target",
+ fields: []*querypb.Field{
+ {
+ Name: "a", Type: sqltypes.Int64,
+ },
+ {
+ Name: "b", Type: sqltypes.Int64,
+ },
+ },
+ pkCols: []int{0, 1},
+ sourcePkCols: []int{0},
+ lastRow: []sqltypes.Value{sqltypes.NewInt64(1), sqltypes.NewInt64(2)},
+ expectedLastPK: `target:{fields:{name:"a" type:INT64} fields:{name:"b" type:INT64} rows:{lengths:1 lengths:1 values:"12"}} source:{fields:{name:"a" type:INT64} rows:{lengths:1 values:"1"}}`,
+ },
+ {
+ name: "more PK cols on source",
+ fields: []*querypb.Field{
+ {
+ Name: "a", Type: sqltypes.Int64,
+ },
+ {
+ Name: "b", Type: sqltypes.Int64,
+ },
+ },
+ pkCols: []int{0},
+ sourcePkCols: []int{0, 1},
+ lastRow: []sqltypes.Value{sqltypes.NewInt64(1), sqltypes.NewInt64(2)},
+ expectedLastPK: `target:{fields:{name:"a" type:INT64} rows:{lengths:1 values:"1"}} source:{fields:{name:"a" type:INT64} fields:{name:"b" type:INT64} rows:{lengths:1 lengths:1 values:"12"}}`,
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ dbc := binlogplayer.NewMockDBClient(t)
+ dbc.ExpectRequest(fmt.Sprintf(queryTemplate, tc.expectedLastPK), &sqltypes.Result{}, nil)
+ td := &tableDiffer{
+ wd: wd,
+ table: table,
+ tablePlan: &tablePlan{
+ pkCols: tc.pkCols,
+ sourcePkCols: tc.sourcePkCols,
+ table: &tabletmanagerdatapb.TableDefinition{
+ Fields: tc.fields,
+ },
+ },
+ }
+ if err := td.updateTableProgress(dbc, dr, tc.lastRow); (err != nil) != tc.wantErr {
+ require.FailNow(t, "tableDiffer.updateTableProgress() error = %v, wantErr %v",
+ err, tc.wantErr)
+ }
+ })
+ }
+}
diff --git a/go/vt/vttablet/tabletmanager/vdiff/table_plan.go b/go/vt/vttablet/tabletmanager/vdiff/table_plan.go
index 836df8ffe94..b5ea384d864 100644
--- a/go/vt/vttablet/tabletmanager/vdiff/table_plan.go
+++ b/go/vt/vttablet/tabletmanager/vdiff/table_plan.go
@@ -53,6 +53,11 @@ type tablePlan struct {
comparePKs []compareColInfo
// pkCols has the indices of PK cols in the select list
pkCols []int
+ // sourcePkCols has the indices of PK cols in the select
+ // list, but from the source keyspace. This is needed to
+ // properly store the lastpk for the source when the source
+ // and target have different PK columns.
+ sourcePkCols []int
// selectPks is the list of pk columns as they appear in the select clause for the diff.
selectPks []int
diff --git a/go/vt/vttablet/tabletmanager/vdiff/utils.go b/go/vt/vttablet/tabletmanager/vdiff/utils.go
index aeaa28972e0..68e8a6acb57 100644
--- a/go/vt/vttablet/tabletmanager/vdiff/utils.go
+++ b/go/vt/vttablet/tabletmanager/vdiff/utils.go
@@ -80,17 +80,6 @@ func insertVDiffLog(ctx context.Context, dbClient binlogplayer.DBClient, vdiffID
}
}
-func stringListContains(lst []string, item string) bool {
- contains := false
- for _, t := range lst {
- if t == item {
- contains = true
- break
- }
- }
- return contains
-}
-
// copyNonKeyRangeExpressions copies all expressions from the input WHERE clause
// to the output WHERE clause except for any in_keyrange() expressions.
func copyNonKeyRangeExpressions(where *sqlparser.Where) *sqlparser.Where {
diff --git a/go/vt/vttablet/tabletmanager/vdiff/workflow_differ.go b/go/vt/vttablet/tabletmanager/vdiff/workflow_differ.go
index ef30d8f14b0..775ae1d9179 100644
--- a/go/vt/vttablet/tabletmanager/vdiff/workflow_differ.go
+++ b/go/vt/vttablet/tabletmanager/vdiff/workflow_differ.go
@@ -21,6 +21,7 @@ import (
"errors"
"fmt"
"reflect"
+ "slices"
"strings"
"time"
@@ -33,6 +34,7 @@ import (
"vitess.io/vitess/go/vt/log"
"vitess.io/vitess/go/vt/schema"
"vitess.io/vitess/go/vt/sqlparser"
+ "vitess.io/vitess/go/vt/topo"
"vitess.io/vitess/go/vt/vtctl/schematools"
"vitess.io/vitess/go/vt/vterrors"
"vitess.io/vitess/go/vt/vtgate/vindexes"
@@ -40,7 +42,6 @@ import (
"vitess.io/vitess/go/vt/vttablet/tabletmanager/vreplication"
binlogdatapb "vitess.io/vitess/go/vt/proto/binlogdata"
- querypb "vitess.io/vitess/go/vt/proto/query"
tabletmanagerdatapb "vitess.io/vitess/go/vt/proto/tabletmanagerdata"
vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc"
)
@@ -344,7 +345,7 @@ func (wd *workflowDiffer) buildPlan(dbClient binlogplayer.DBClient, filter *binl
for _, table := range schm.TableDefinitions {
// if user specified tables explicitly only use those, otherwise diff all tables in workflow
- if len(specifiedTables) != 0 && !stringListContains(specifiedTables, table.Name) {
+ if len(specifiedTables) != 0 && !slices.Contains(specifiedTables, table.Name) {
continue
}
if schema.IsInternalOperationTableName(table.Name) && !schema.IsOnlineDDLTableName(table.Name) {
@@ -370,15 +371,24 @@ func (wd *workflowDiffer) buildPlan(dbClient binlogplayer.DBClient, filter *binl
}
td := newTableDiffer(wd, table, sourceQuery)
- lastpkpb, err := wd.getTableLastPK(dbClient, table.Name)
+ lastPK, err := wd.getTableLastPK(dbClient, table.Name)
if err != nil {
return err
}
- td.lastPK = lastpkpb
+ if lastPK != nil {
+ td.lastSourcePK = lastPK.Source
+ td.lastTargetPK = lastPK.Target
+ }
wd.tableDiffers[table.Name] = td
if _, err := td.buildTablePlan(dbClient, wd.ct.vde.dbName, wd.collationEnv); err != nil {
return err
}
+ // We get the PK columns from the source schema as well as they can differ
+ // and they determine the proper position to use when saving our progress.
+ if err := td.getSourcePKCols(); err != nil {
+ return vterrors.Wrapf(err, "could not get the primary key columns from the %s source keyspace",
+ wd.ct.sourceKeyspace)
+ }
}
if len(wd.tableDiffers) == 0 {
return fmt.Errorf("no tables found to diff, %s:%s, on tablet %v",
@@ -388,7 +398,7 @@ func (wd *workflowDiffer) buildPlan(dbClient binlogplayer.DBClient, filter *binl
}
// getTableLastPK gets the lastPK protobuf message for a given vdiff table.
-func (wd *workflowDiffer) getTableLastPK(dbClient binlogplayer.DBClient, tableName string) (*querypb.QueryResult, error) {
+func (wd *workflowDiffer) getTableLastPK(dbClient binlogplayer.DBClient, tableName string) (*tabletmanagerdatapb.VDiffTableLastPK, error) {
query, err := sqlparser.ParseAndBind(sqlGetVDiffTable,
sqltypes.Int64BindVariable(wd.ct.id),
sqltypes.StringBindVariable(tableName),
@@ -406,11 +416,15 @@ func (wd *workflowDiffer) getTableLastPK(dbClient binlogplayer.DBClient, tableNa
return nil, err
}
if len(lastpk) != 0 {
- var lastpkpb querypb.QueryResult
- if err := prototext.Unmarshal(lastpk, &lastpkpb); err != nil {
- return nil, err
+ lastPK := &tabletmanagerdatapb.VDiffTableLastPK{}
+ if err := prototext.Unmarshal(lastpk, lastPK); err != nil {
+ return nil, vterrors.Wrapf(err, "failed to unmarshal lastpk value of %s for the %s table",
+ string(lastpk), tableName)
+ }
+ if lastPK.Source == nil { // Then it's the same as the target
+ lastPK.Source = lastPK.Target
}
- return &lastpkpb, nil
+ return lastPK, nil
}
}
return nil, nil
@@ -488,3 +502,14 @@ func (wd *workflowDiffer) initVDiffTables(dbClient binlogplayer.DBClient) error
}
return nil
}
+
+// getSourceTopoServer returns the source topo server as for Mount+Migrate the
+// source tablets will be in a different Vitess cluster with its own TopoServer.
+func (wd *workflowDiffer) getSourceTopoServer() (*topo.Server, error) {
+ if wd.ct.externalCluster == "" {
+ return wd.ct.ts, nil
+ }
+ ctx, cancel := context.WithTimeout(wd.ct.vde.ctx, topo.RemoteOperationTimeout)
+ defer cancel()
+ return wd.ct.ts.OpenExternalVitessClusterServer(ctx, wd.ct.externalCluster)
+}
diff --git a/go/vt/vttablet/tabletmanager/vdiff/workflow_differ_test.go b/go/vt/vttablet/tabletmanager/vdiff/workflow_differ_test.go
index c51b6fdf281..5ac0fabd726 100644
--- a/go/vt/vttablet/tabletmanager/vdiff/workflow_differ_test.go
+++ b/go/vt/vttablet/tabletmanager/vdiff/workflow_differ_test.go
@@ -51,6 +51,16 @@ func TestBuildPlanSuccess(t *testing.T) {
vdiffenv.dbClient.ExpectRequest("select * from _vt.vdiff where id = 1", noResults, nil)
ct, err := newController(context.Background(), controllerQR.Named().Row(), vdiffenv.dbClientFactory, tstenv.TopoServ, vdiffenv.vde, vdiffenv.opts)
require.NoError(t, err)
+ ct.sources = map[string]*migrationSource{
+ tstenv.ShardName: {
+ vrID: 1,
+ shardStreamer: &shardStreamer{
+ tablet: vdenv.vde.thisTablet,
+ shard: tstenv.ShardName,
+ },
+ },
+ }
+ ct.sourceKeyspace = tstenv.KeyspaceName
testcases := []struct {
input *binlogdatapb.Rule
@@ -63,14 +73,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 order by c1 asc",
- targetQuery: "select c1, c2 from t1 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 order by c1 asc",
+ targetQuery: "select c1, c2 from t1 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -83,14 +94,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 where in_keyrange('-80') order by c1 asc",
- targetQuery: "select c1, c2 from t1 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 where in_keyrange('-80') order by c1 asc",
+ targetQuery: "select c1, c2 from t1 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -103,14 +115,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 order by c1 asc",
- targetQuery: "select c1, c2 from t1 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 order by c1 asc",
+ targetQuery: "select c1, c2 from t1 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -123,14 +136,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c2, c1 from t1 order by c1 asc",
- targetQuery: "select c2, c1 from t1 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- comparePKs: []compareColInfo{{1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{1},
- selectPks: []int{1},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c2, c1 from t1 order by c1 asc",
+ targetQuery: "select c2, c1 from t1 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ comparePKs: []compareColInfo{{1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{1},
+ sourcePkCols: []int{0},
+ selectPks: []int{1},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -143,14 +157,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c0 as c1, c2 from t2 order by c1 asc",
- targetQuery: "select c1, c2 from t1 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c0 as c1, c2 from t2 order by c1 asc",
+ targetQuery: "select c1, c2 from t1 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -164,14 +179,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "nonpktext",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["nonpktext"]],
- sourceQuery: "select c1, textcol from nonpktext order by c1 asc",
- targetQuery: "select c1, textcol from nonpktext order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "textcol"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["nonpktext"]],
+ sourceQuery: "select c1, textcol from nonpktext order by c1 asc",
+ targetQuery: "select c1, textcol from nonpktext order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "textcol"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -185,14 +201,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "nonpktext",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["nonpktext"]],
- sourceQuery: "select textcol, c1 from nonpktext order by c1 asc",
- targetQuery: "select textcol, c1 from nonpktext order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "textcol"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- comparePKs: []compareColInfo{{1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{1},
- selectPks: []int{1},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["nonpktext"]],
+ sourceQuery: "select textcol, c1 from nonpktext order by c1 asc",
+ targetQuery: "select textcol, c1 from nonpktext order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "textcol"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ comparePKs: []compareColInfo{{1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{1},
+ sourcePkCols: []int{0},
+ selectPks: []int{1},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -206,14 +223,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "pktext",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["pktext"]],
- sourceQuery: "select textcol, c2 from pktext order by textcol asc",
- targetQuery: "select textcol, c2 from pktext order by textcol asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["pktext"]],
+ sourceQuery: "select textcol, c2 from pktext order by textcol asc",
+ targetQuery: "select textcol, c2 from pktext order by textcol asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("textcol")},
Direction: sqlparser.AscOrder,
@@ -227,14 +245,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "pktext",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["pktext"]],
- sourceQuery: "select c2, textcol from pktext order by textcol asc",
- targetQuery: "select c2, textcol from pktext order by textcol asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
- comparePKs: []compareColInfo{{1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
- pkCols: []int{1},
- selectPks: []int{1},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["pktext"]],
+ sourceQuery: "select c2, textcol from pktext order by textcol asc",
+ targetQuery: "select c2, textcol from pktext order by textcol asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
+ comparePKs: []compareColInfo{{1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
+ pkCols: []int{1},
+ sourcePkCols: []int{},
+ selectPks: []int{1},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("textcol")},
Direction: sqlparser.AscOrder,
@@ -248,14 +267,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "nopk",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["nopk"]],
- sourceQuery: "select c1, c2, c3 from nopk order by c1 asc, c2 asc, c3 asc",
- targetQuery: "select c1, c2, c3 from nopk order by c1 asc, c2 asc, c3 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c2"}, {2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c3"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c2"}, {2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c3"}},
- pkCols: []int{0, 1, 2},
- selectPks: []int{0, 1, 2},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["nopk"]],
+ sourceQuery: "select c1, c2, c3 from nopk order by c1 asc, c2 asc, c3 asc",
+ targetQuery: "select c1, c2, c3 from nopk order by c1 asc, c2 asc, c3 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c2"}, {2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c3"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c2"}, {2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c3"}},
+ pkCols: []int{0, 1, 2},
+ sourcePkCols: []int{0},
+ selectPks: []int{0, 1, 2},
orderBy: sqlparser.OrderBy{
&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
@@ -279,14 +299,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "nopkwithpke",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["nopkwithpke"]],
- sourceQuery: "select c1, c2, c3 from nopkwithpke order by c3 asc",
- targetQuery: "select c1, c2, c3 from nopkwithpke order by c3 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c3"}},
- comparePKs: []compareColInfo{{2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c3"}},
- pkCols: []int{2},
- selectPks: []int{2},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["nopkwithpke"]],
+ sourceQuery: "select c1, c2, c3 from nopkwithpke order by c3 asc",
+ targetQuery: "select c1, c2, c3 from nopkwithpke order by c3 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c3"}},
+ comparePKs: []compareColInfo{{2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c3"}},
+ pkCols: []int{2},
+ sourcePkCols: []int{0},
+ selectPks: []int{2},
orderBy: sqlparser.OrderBy{
&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c3")},
@@ -302,14 +323,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "pktext",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["pktext"]],
- sourceQuery: "select c2, a + b as textcol from pktext order by textcol asc",
- targetQuery: "select c2, textcol from pktext order by textcol asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
- comparePKs: []compareColInfo{{1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
- pkCols: []int{1},
- selectPks: []int{1},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["pktext"]],
+ sourceQuery: "select c2, a + b as textcol from pktext order by textcol asc",
+ targetQuery: "select c2, textcol from pktext order by textcol asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
+ comparePKs: []compareColInfo{{1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "textcol"}},
+ pkCols: []int{1},
+ sourcePkCols: []int{},
+ selectPks: []int{1},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("textcol")},
Direction: sqlparser.AscOrder,
@@ -322,14 +344,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "multipk",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["multipk"]],
- sourceQuery: "select c1, c2 from multipk order by c1 asc, c2 asc",
- targetQuery: "select c1, c2 from multipk order by c1 asc, c2 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c2"}},
- pkCols: []int{0, 1},
- selectPks: []int{0, 1},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["multipk"]],
+ sourceQuery: "select c1, c2 from multipk order by c1 asc, c2 asc",
+ targetQuery: "select c1, c2 from multipk order by c1 asc, c2 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c2"}},
+ pkCols: []int{0, 1},
+ sourcePkCols: []int{0},
+ selectPks: []int{0, 1},
orderBy: sqlparser.OrderBy{
&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
@@ -349,14 +372,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 where in_keyrange('-80') order by c1 asc",
- targetQuery: "select c1, c2 from t1 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 where in_keyrange('-80') order by c1 asc",
+ targetQuery: "select c1, c2 from t1 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -370,14 +394,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 where c2 = 2 and in_keyrange('-80') order by c1 asc",
- targetQuery: "select c1, c2 from t1 where c2 = 2 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 where c2 = 2 and in_keyrange('-80') order by c1 asc",
+ targetQuery: "select c1, c2 from t1 where c2 = 2 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -391,14 +416,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 where in_keyrange('-80') and c2 = 2 order by c1 asc",
- targetQuery: "select c1, c2 from t1 where c2 = 2 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 where in_keyrange('-80') and c2 = 2 order by c1 asc",
+ targetQuery: "select c1, c2 from t1 where c2 = 2 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -412,14 +438,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 where c2 = 2 and c1 = 1 and in_keyrange('-80') order by c1 asc",
- targetQuery: "select c1, c2 from t1 where c2 = 2 and c1 = 1 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 where c2 = 2 and c1 = 1 and in_keyrange('-80') order by c1 asc",
+ targetQuery: "select c1, c2 from t1 where c2 = 2 and c1 = 1 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -433,14 +460,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 where c2 = 2 and in_keyrange('-80') order by c1 asc",
- targetQuery: "select c1, c2 from t1 where c2 = 2 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 where c2 = 2 and in_keyrange('-80') order by c1 asc",
+ targetQuery: "select c1, c2 from t1 where c2 = 2 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -454,14 +482,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "t1",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["t1"]],
- sourceQuery: "select c1, c2 from t1 group by c1 order by c1 asc",
- targetQuery: "select c1, c2 from t1 order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["t1"]],
+ sourceQuery: "select c1, c2 from t1 group by c1 order by c1 asc",
+ targetQuery: "select c1, c2 from t1 order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -475,14 +504,15 @@ func TestBuildPlanSuccess(t *testing.T) {
},
table: "aggr",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["aggr"]],
- sourceQuery: "select c1, c2, count(*) as c3, sum(c4) as c4 from t1 group by c1 order by c1 asc",
- targetQuery: "select c1, c2, c3, c4 from aggr order by c1 asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c3"}, {3, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c4"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["aggr"]],
+ sourceQuery: "select c1, c2, count(*) as c3, sum(c4) as c4 from t1 group by c1 order by c1 asc",
+ targetQuery: "select c1, c2, c3, c4 from aggr order by c1 asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c2"}, {2, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c3"}, {3, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "c4"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "c1"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{0},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("c1")},
Direction: sqlparser.AscOrder,
@@ -500,14 +530,15 @@ func TestBuildPlanSuccess(t *testing.T) {
sourceTimeZone: "US/Pacific",
table: "datze",
tablePlan: &tablePlan{
- dbName: vdiffDBName,
- table: testSchema.TableDefinitions[tableDefMap["datze"]],
- sourceQuery: "select id, dt from datze order by id asc",
- targetQuery: "select id, convert_tz(dt, 'UTC', 'US/Pacific') as dt from datze order by id asc",
- compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "id"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "dt"}},
- comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "id"}},
- pkCols: []int{0},
- selectPks: []int{0},
+ dbName: vdiffDBName,
+ table: testSchema.TableDefinitions[tableDefMap["datze"]],
+ sourceQuery: "select id, dt from datze order by id asc",
+ targetQuery: "select id, convert_tz(dt, 'UTC', 'US/Pacific') as dt from datze order by id asc",
+ compareCols: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "id"}, {1, collations.MySQL8().LookupByName(sqltypes.NULL.String()), false, "dt"}},
+ comparePKs: []compareColInfo{{0, collations.MySQL8().LookupByName(sqltypes.NULL.String()), true, "id"}},
+ pkCols: []int{0},
+ sourcePkCols: []int{},
+ selectPks: []int{0},
orderBy: sqlparser.OrderBy{&sqlparser.Order{
Expr: &sqlparser.ColName{Name: sqlparser.NewIdentifierCI("id")},
Direction: sqlparser.AscOrder,
diff --git a/go/vt/vttablet/tabletserver/vstreamer/rowstreamer.go b/go/vt/vttablet/tabletserver/vstreamer/rowstreamer.go
index 31c47674233..317936e4289 100644
--- a/go/vt/vttablet/tabletserver/vstreamer/rowstreamer.go
+++ b/go/vt/vttablet/tabletserver/vstreamer/rowstreamer.go
@@ -276,7 +276,8 @@ func (rs *rowStreamer) buildSelect(st *binlogdatapb.MinimalTable) (string, error
buf.Myprintf(" from %v%s", sqlparser.NewIdentifierCS(rs.plan.Table.Name), indexHint)
if len(rs.lastpk) != 0 {
if len(rs.lastpk) != len(rs.pkColumns) {
- return "", fmt.Errorf("primary key values don't match length: %v vs %v", rs.lastpk, rs.pkColumns)
+ return "", fmt.Errorf("cannot build a row streamer plan for the %s table as a lastpk value was provided and the number of primary key values within it (%v) does not match the number of primary key columns in the table (%d)",
+ st.Name, rs.lastpk, rs.pkColumns)
}
buf.WriteString(" where ")
prefix := ""
diff --git a/java/example/pom.xml b/java/example/pom.xml
index fabab27dd77..19b5838510b 100644
--- a/java/example/pom.xml
+++ b/java/example/pom.xml
@@ -30,9 +30,9 @@
- mysql
- mysql-connector-java
- 8.0.33
+ com.mysql
+ mysql-connector-j
+ 8.4.0
false
diff --git a/java/jdbc/src/main/java/io/vitess/jdbc/VitessJDBCUrl.java b/java/jdbc/src/main/java/io/vitess/jdbc/VitessJDBCUrl.java
index e6a1b0187dd..3835ba543f8 100644
--- a/java/jdbc/src/main/java/io/vitess/jdbc/VitessJDBCUrl.java
+++ b/java/jdbc/src/main/java/io/vitess/jdbc/VitessJDBCUrl.java
@@ -218,7 +218,7 @@ private static Properties getURLParamProperties(String paramString, Properties i
}
}
- // Per the mysql-connector-java docs, passed in Properties values should take precedence
+ // Per the mysql-connector-j docs, passed in Properties values should take precedence
// over
// those in the URL. See javadoc for NonRegisteringDriver#connect
if ((null != value && value.length() > 0) && (parameter.length() > 0) && null == info
diff --git a/java/jdbc/src/main/java/io/vitess/jdbc/VitessParameterMetaData.java b/java/jdbc/src/main/java/io/vitess/jdbc/VitessParameterMetaData.java
index 8bb880e3749..e556ba7ac37 100644
--- a/java/jdbc/src/main/java/io/vitess/jdbc/VitessParameterMetaData.java
+++ b/java/jdbc/src/main/java/io/vitess/jdbc/VitessParameterMetaData.java
@@ -25,7 +25,7 @@ public class VitessParameterMetaData implements ParameterMetaData {
private final int parameterCount;
/**
- * This implementation (and defaults below) is equivalent to mysql-connector-java's "simple"
+ * This implementation (and defaults below) is equivalent to mysql-connector-j's "simple"
* (non-server) statement metadata
*/
VitessParameterMetaData(int count) {
diff --git a/java/jdbc/src/main/java/io/vitess/jdbc/VitessPreparedStatement.java b/java/jdbc/src/main/java/io/vitess/jdbc/VitessPreparedStatement.java
index 550b5180e11..e97b2d151bb 100644
--- a/java/jdbc/src/main/java/io/vitess/jdbc/VitessPreparedStatement.java
+++ b/java/jdbc/src/main/java/io/vitess/jdbc/VitessPreparedStatement.java
@@ -426,7 +426,7 @@ public ParameterMetaData getParameterMetaData() throws SQLException {
}
/**
- * This function was ported from mysql-connector-java ParseInfo object and greatly simplified to
+ * This function was ported from mysql-connector-j ParseInfo object and greatly simplified to
* just the parts for counting parameters
*/
private int calculateParameterCount() throws SQLException {
diff --git a/java/jdbc/src/main/java/io/vitess/util/charset/CharsetMapping.java b/java/jdbc/src/main/java/io/vitess/util/charset/CharsetMapping.java
index 343ae0e90eb..8b32e2aab67 100644
--- a/java/jdbc/src/main/java/io/vitess/util/charset/CharsetMapping.java
+++ b/java/jdbc/src/main/java/io/vitess/util/charset/CharsetMapping.java
@@ -24,7 +24,7 @@
import java.util.Map;
/**
- * These classes were pulled from mysql-connector-java and simplified to just the parts supporting
+ * These classes were pulled from mysql-connector-j and simplified to just the parts supporting
* the statically available charsets
*/
public class CharsetMapping {
diff --git a/java/jdbc/src/main/java/io/vitess/util/charset/Collation.java b/java/jdbc/src/main/java/io/vitess/util/charset/Collation.java
index 31548686655..7bd24d10f2a 100644
--- a/java/jdbc/src/main/java/io/vitess/util/charset/Collation.java
+++ b/java/jdbc/src/main/java/io/vitess/util/charset/Collation.java
@@ -17,7 +17,7 @@
package io.vitess.util.charset;
/**
- * These classes were pulled from mysql-connector-java and simplified to just the parts supporting
+ * These classes were pulled from mysql-connector-j and simplified to just the parts supporting
* the statically available charsets
*/
class Collation {
diff --git a/java/jdbc/src/main/java/io/vitess/util/charset/MysqlCharset.java b/java/jdbc/src/main/java/io/vitess/util/charset/MysqlCharset.java
index fad94cb8dcb..6691e1cb4b4 100644
--- a/java/jdbc/src/main/java/io/vitess/util/charset/MysqlCharset.java
+++ b/java/jdbc/src/main/java/io/vitess/util/charset/MysqlCharset.java
@@ -23,7 +23,7 @@
import java.util.Set;
/**
- * These classes were pulled from mysql-connector-java and simplified to just the parts supporting
+ * These classes were pulled from mysql-connector-j and simplified to just the parts supporting
* the statically available charsets
*/
class MysqlCharset {
diff --git a/java/pom.xml b/java/pom.xml
index e68bbd5574e..bc173282faf 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -252,7 +252,7 @@
true
true
- mysql:mysql-connector-java
+ com.mysql:mysql-connector-j
io.grpc:grpc-context
diff --git a/proto/tabletmanagerdata.proto b/proto/tabletmanagerdata.proto
index bb20e712e7f..4a3dd20a0a1 100644
--- a/proto/tabletmanagerdata.proto
+++ b/proto/tabletmanagerdata.proto
@@ -760,6 +760,13 @@ message VDiffOptions {
VDiffReportOptions report_options = 3;
}
+message VDiffTableLastPK {
+ query.QueryResult target = 1;
+ // If the source value is nil then it's the same as the target
+ // and the target value should be used for both.
+ optional query.QueryResult source = 2;
+}
+
// UpdateVReplicationWorkflowRequest is used to update an existing VReplication
// workflow. Note that the following fields MUST have an explicit value provided
diff --git a/test/config.json b/test/config.json
index dfc0910f10e..17cdb019e97 100644
--- a/test/config.json
+++ b/test/config.json
@@ -8,7 +8,7 @@
"java_test"
],
"Manual": false,
- "Shard": "10",
+ "Shard": "java",
"RetryMax": 1,
"Tags": []
},
@@ -19,7 +19,7 @@
"test/client_test.sh"
],
"Manual": false,
- "Shard": "25",
+ "Shard": "java",
"RetryMax": 1,
"Tags": []
},
@@ -483,7 +483,7 @@
],
"Command": [],
"Manual": false,
- "Shard": "25",
+ "Shard": "docker_cluster",
"RetryMax": 1,
"Tags": [
"site_test"
@@ -989,7 +989,7 @@
"Args": ["vitess.io/vitess/go/test/endtoend/topotest/zk2", "--topo-flavor=zk2"],
"Command": [],
"Manual": false,
- "Shard": "25",
+ "Shard": "docker_cluster",
"RetryMax": 1,
"Tags": []
},
@@ -1061,7 +1061,7 @@
"Args": ["vitess.io/vitess/go/test/endtoend/vtcombo"],
"Command": [],
"Manual": false,
- "Shard": "25",
+ "Shard": "docker_cluster",
"RetryMax": 1,
"Tags": []
},
diff --git a/test/templates/cluster_endtoend_test.tpl b/test/templates/cluster_endtoend_test.tpl
index f51b06a2faf..c5129805126 100644
--- a/test/templates/cluster_endtoend_test.tpl
+++ b/test/templates/cluster_endtoend_test.tpl
@@ -13,6 +13,7 @@ env:
jobs:
build:
+ timeout-minutes: 60
name: Run endtoend tests on {{.Name}}
runs-on: {{if .Cores16}}gh-hosted-runners-16cores-1-24.04{{else}}ubuntu-24.04{{end}}
@@ -56,7 +57,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -66,6 +69,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
@@ -105,6 +109,7 @@ jobs:
- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
+ timeout-minutes: 10
run: |
{{if .InstallXtraBackup}}
diff --git a/test/templates/cluster_endtoend_test_docker.tpl b/test/templates/cluster_endtoend_test_docker.tpl
index f7e8aa2c1d8..39a36b88c89 100644
--- a/test/templates/cluster_endtoend_test_docker.tpl
+++ b/test/templates/cluster_endtoend_test_docker.tpl
@@ -28,7 +28,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -38,6 +40,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
diff --git a/test/templates/cluster_endtoend_test_mysql57.tpl b/test/templates/cluster_endtoend_test_mysql57.tpl
index f4152c939b0..a6cbc969c1a 100644
--- a/test/templates/cluster_endtoend_test_mysql57.tpl
+++ b/test/templates/cluster_endtoend_test_mysql57.tpl
@@ -61,7 +61,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -71,6 +73,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/onlineddl/vrepl_suite/**'
diff --git a/test/templates/cluster_vitess_tester.tpl b/test/templates/cluster_vitess_tester.tpl
index b8d77754ba6..508824dde87 100644
--- a/test/templates/cluster_vitess_tester.tpl
+++ b/test/templates/cluster_vitess_tester.tpl
@@ -43,7 +43,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -53,6 +55,7 @@ jobs:
token: ''
filters: |
end_to_end:
+ - 'test/config.json'
- 'go/**/*.go'
- 'go/vt/sidecardb/**/*.sql'
- 'go/test/endtoend/vtgate/vitess_tester/**'
diff --git a/test/templates/unit_test.tpl b/test/templates/unit_test.tpl
index f802ee7ad4a..10c3b8c0c6a 100644
--- a/test/templates/unit_test.tpl
+++ b/test/templates/unit_test.tpl
@@ -43,7 +43,9 @@ jobs:
- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: 'false'
- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
@@ -53,6 +55,7 @@ jobs:
token: ''
filters: |
unit_tests:
+ - 'test/config.json'
- 'go/**'
- 'test.go'
- 'Makefile'
diff --git a/web/vtadmin/src/proto/vtadmin.d.ts b/web/vtadmin/src/proto/vtadmin.d.ts
index 234c7e0f323..0e6790010bc 100644
--- a/web/vtadmin/src/proto/vtadmin.d.ts
+++ b/web/vtadmin/src/proto/vtadmin.d.ts
@@ -34138,6 +34138,112 @@ export namespace tabletmanagerdata {
public static getTypeUrl(typeUrlPrefix?: string): string;
}
+ /** Properties of a VDiffTableLastPK. */
+ interface IVDiffTableLastPK {
+
+ /** VDiffTableLastPK target */
+ target?: (query.IQueryResult|null);
+
+ /** VDiffTableLastPK source */
+ source?: (query.IQueryResult|null);
+ }
+
+ /** Represents a VDiffTableLastPK. */
+ class VDiffTableLastPK implements IVDiffTableLastPK {
+
+ /**
+ * Constructs a new VDiffTableLastPK.
+ * @param [properties] Properties to set
+ */
+ constructor(properties?: tabletmanagerdata.IVDiffTableLastPK);
+
+ /** VDiffTableLastPK target. */
+ public target?: (query.IQueryResult|null);
+
+ /** VDiffTableLastPK source. */
+ public source?: (query.IQueryResult|null);
+
+ /** VDiffTableLastPK _source. */
+ public _source?: "source";
+
+ /**
+ * Creates a new VDiffTableLastPK instance using the specified properties.
+ * @param [properties] Properties to set
+ * @returns VDiffTableLastPK instance
+ */
+ public static create(properties?: tabletmanagerdata.IVDiffTableLastPK): tabletmanagerdata.VDiffTableLastPK;
+
+ /**
+ * Encodes the specified VDiffTableLastPK message. Does not implicitly {@link tabletmanagerdata.VDiffTableLastPK.verify|verify} messages.
+ * @param message VDiffTableLastPK message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encode(message: tabletmanagerdata.IVDiffTableLastPK, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Encodes the specified VDiffTableLastPK message, length delimited. Does not implicitly {@link tabletmanagerdata.VDiffTableLastPK.verify|verify} messages.
+ * @param message VDiffTableLastPK message or plain object to encode
+ * @param [writer] Writer to encode to
+ * @returns Writer
+ */
+ public static encodeDelimited(message: tabletmanagerdata.IVDiffTableLastPK, writer?: $protobuf.Writer): $protobuf.Writer;
+
+ /**
+ * Decodes a VDiffTableLastPK message from the specified reader or buffer.
+ * @param reader Reader or buffer to decode from
+ * @param [length] Message length if known beforehand
+ * @returns VDiffTableLastPK
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): tabletmanagerdata.VDiffTableLastPK;
+
+ /**
+ * Decodes a VDiffTableLastPK message from the specified reader or buffer, length delimited.
+ * @param reader Reader or buffer to decode from
+ * @returns VDiffTableLastPK
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): tabletmanagerdata.VDiffTableLastPK;
+
+ /**
+ * Verifies a VDiffTableLastPK message.
+ * @param message Plain object to verify
+ * @returns `null` if valid, otherwise the reason why it is not
+ */
+ public static verify(message: { [k: string]: any }): (string|null);
+
+ /**
+ * Creates a VDiffTableLastPK message from a plain object. Also converts values to their respective internal types.
+ * @param object Plain object
+ * @returns VDiffTableLastPK
+ */
+ public static fromObject(object: { [k: string]: any }): tabletmanagerdata.VDiffTableLastPK;
+
+ /**
+ * Creates a plain object from a VDiffTableLastPK message. Also converts values to other types if specified.
+ * @param message VDiffTableLastPK
+ * @param [options] Conversion options
+ * @returns Plain object
+ */
+ public static toObject(message: tabletmanagerdata.VDiffTableLastPK, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+ /**
+ * Converts this VDiffTableLastPK to JSON.
+ * @returns JSON object
+ */
+ public toJSON(): { [k: string]: any };
+
+ /**
+ * Gets the default type url for VDiffTableLastPK
+ * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns The default type url
+ */
+ public static getTypeUrl(typeUrlPrefix?: string): string;
+ }
+
/** Properties of an UpdateVReplicationWorkflowRequest. */
interface IUpdateVReplicationWorkflowRequest {
diff --git a/web/vtadmin/src/proto/vtadmin.js b/web/vtadmin/src/proto/vtadmin.js
index f1935b2a9b3..ed8ce616076 100644
--- a/web/vtadmin/src/proto/vtadmin.js
+++ b/web/vtadmin/src/proto/vtadmin.js
@@ -78899,6 +78899,262 @@ export const tabletmanagerdata = $root.tabletmanagerdata = (() => {
return VDiffOptions;
})();
+ tabletmanagerdata.VDiffTableLastPK = (function() {
+
+ /**
+ * Properties of a VDiffTableLastPK.
+ * @memberof tabletmanagerdata
+ * @interface IVDiffTableLastPK
+ * @property {query.IQueryResult|null} [target] VDiffTableLastPK target
+ * @property {query.IQueryResult|null} [source] VDiffTableLastPK source
+ */
+
+ /**
+ * Constructs a new VDiffTableLastPK.
+ * @memberof tabletmanagerdata
+ * @classdesc Represents a VDiffTableLastPK.
+ * @implements IVDiffTableLastPK
+ * @constructor
+ * @param {tabletmanagerdata.IVDiffTableLastPK=} [properties] Properties to set
+ */
+ function VDiffTableLastPK(properties) {
+ if (properties)
+ for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+ if (properties[keys[i]] != null)
+ this[keys[i]] = properties[keys[i]];
+ }
+
+ /**
+ * VDiffTableLastPK target.
+ * @member {query.IQueryResult|null|undefined} target
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @instance
+ */
+ VDiffTableLastPK.prototype.target = null;
+
+ /**
+ * VDiffTableLastPK source.
+ * @member {query.IQueryResult|null|undefined} source
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @instance
+ */
+ VDiffTableLastPK.prototype.source = null;
+
+ // OneOf field names bound to virtual getters and setters
+ let $oneOfFields;
+
+ /**
+ * VDiffTableLastPK _source.
+ * @member {"source"|undefined} _source
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @instance
+ */
+ Object.defineProperty(VDiffTableLastPK.prototype, "_source", {
+ get: $util.oneOfGetter($oneOfFields = ["source"]),
+ set: $util.oneOfSetter($oneOfFields)
+ });
+
+ /**
+ * Creates a new VDiffTableLastPK instance using the specified properties.
+ * @function create
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {tabletmanagerdata.IVDiffTableLastPK=} [properties] Properties to set
+ * @returns {tabletmanagerdata.VDiffTableLastPK} VDiffTableLastPK instance
+ */
+ VDiffTableLastPK.create = function create(properties) {
+ return new VDiffTableLastPK(properties);
+ };
+
+ /**
+ * Encodes the specified VDiffTableLastPK message. Does not implicitly {@link tabletmanagerdata.VDiffTableLastPK.verify|verify} messages.
+ * @function encode
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {tabletmanagerdata.IVDiffTableLastPK} message VDiffTableLastPK message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ VDiffTableLastPK.encode = function encode(message, writer) {
+ if (!writer)
+ writer = $Writer.create();
+ if (message.target != null && Object.hasOwnProperty.call(message, "target"))
+ $root.query.QueryResult.encode(message.target, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+ if (message.source != null && Object.hasOwnProperty.call(message, "source"))
+ $root.query.QueryResult.encode(message.source, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
+ return writer;
+ };
+
+ /**
+ * Encodes the specified VDiffTableLastPK message, length delimited. Does not implicitly {@link tabletmanagerdata.VDiffTableLastPK.verify|verify} messages.
+ * @function encodeDelimited
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {tabletmanagerdata.IVDiffTableLastPK} message VDiffTableLastPK message or plain object to encode
+ * @param {$protobuf.Writer} [writer] Writer to encode to
+ * @returns {$protobuf.Writer} Writer
+ */
+ VDiffTableLastPK.encodeDelimited = function encodeDelimited(message, writer) {
+ return this.encode(message, writer).ldelim();
+ };
+
+ /**
+ * Decodes a VDiffTableLastPK message from the specified reader or buffer.
+ * @function decode
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @param {number} [length] Message length if known beforehand
+ * @returns {tabletmanagerdata.VDiffTableLastPK} VDiffTableLastPK
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ VDiffTableLastPK.decode = function decode(reader, length) {
+ if (!(reader instanceof $Reader))
+ reader = $Reader.create(reader);
+ let end = length === undefined ? reader.len : reader.pos + length, message = new $root.tabletmanagerdata.VDiffTableLastPK();
+ while (reader.pos < end) {
+ let tag = reader.uint32();
+ switch (tag >>> 3) {
+ case 1: {
+ message.target = $root.query.QueryResult.decode(reader, reader.uint32());
+ break;
+ }
+ case 2: {
+ message.source = $root.query.QueryResult.decode(reader, reader.uint32());
+ break;
+ }
+ default:
+ reader.skipType(tag & 7);
+ break;
+ }
+ }
+ return message;
+ };
+
+ /**
+ * Decodes a VDiffTableLastPK message from the specified reader or buffer, length delimited.
+ * @function decodeDelimited
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+ * @returns {tabletmanagerdata.VDiffTableLastPK} VDiffTableLastPK
+ * @throws {Error} If the payload is not a reader or valid buffer
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
+ */
+ VDiffTableLastPK.decodeDelimited = function decodeDelimited(reader) {
+ if (!(reader instanceof $Reader))
+ reader = new $Reader(reader);
+ return this.decode(reader, reader.uint32());
+ };
+
+ /**
+ * Verifies a VDiffTableLastPK message.
+ * @function verify
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {Object.} message Plain object to verify
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
+ */
+ VDiffTableLastPK.verify = function verify(message) {
+ if (typeof message !== "object" || message === null)
+ return "object expected";
+ let properties = {};
+ if (message.target != null && message.hasOwnProperty("target")) {
+ let error = $root.query.QueryResult.verify(message.target);
+ if (error)
+ return "target." + error;
+ }
+ if (message.source != null && message.hasOwnProperty("source")) {
+ properties._source = 1;
+ {
+ let error = $root.query.QueryResult.verify(message.source);
+ if (error)
+ return "source." + error;
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Creates a VDiffTableLastPK message from a plain object. Also converts values to their respective internal types.
+ * @function fromObject
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {Object.} object Plain object
+ * @returns {tabletmanagerdata.VDiffTableLastPK} VDiffTableLastPK
+ */
+ VDiffTableLastPK.fromObject = function fromObject(object) {
+ if (object instanceof $root.tabletmanagerdata.VDiffTableLastPK)
+ return object;
+ let message = new $root.tabletmanagerdata.VDiffTableLastPK();
+ if (object.target != null) {
+ if (typeof object.target !== "object")
+ throw TypeError(".tabletmanagerdata.VDiffTableLastPK.target: object expected");
+ message.target = $root.query.QueryResult.fromObject(object.target);
+ }
+ if (object.source != null) {
+ if (typeof object.source !== "object")
+ throw TypeError(".tabletmanagerdata.VDiffTableLastPK.source: object expected");
+ message.source = $root.query.QueryResult.fromObject(object.source);
+ }
+ return message;
+ };
+
+ /**
+ * Creates a plain object from a VDiffTableLastPK message. Also converts values to other types if specified.
+ * @function toObject
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {tabletmanagerdata.VDiffTableLastPK} message VDiffTableLastPK
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
+ * @returns {Object.} Plain object
+ */
+ VDiffTableLastPK.toObject = function toObject(message, options) {
+ if (!options)
+ options = {};
+ let object = {};
+ if (options.defaults)
+ object.target = null;
+ if (message.target != null && message.hasOwnProperty("target"))
+ object.target = $root.query.QueryResult.toObject(message.target, options);
+ if (message.source != null && message.hasOwnProperty("source")) {
+ object.source = $root.query.QueryResult.toObject(message.source, options);
+ if (options.oneofs)
+ object._source = "source";
+ }
+ return object;
+ };
+
+ /**
+ * Converts this VDiffTableLastPK to JSON.
+ * @function toJSON
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @instance
+ * @returns {Object.} JSON object
+ */
+ VDiffTableLastPK.prototype.toJSON = function toJSON() {
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+ };
+
+ /**
+ * Gets the default type url for VDiffTableLastPK
+ * @function getTypeUrl
+ * @memberof tabletmanagerdata.VDiffTableLastPK
+ * @static
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+ * @returns {string} The default type url
+ */
+ VDiffTableLastPK.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+ if (typeUrlPrefix === undefined) {
+ typeUrlPrefix = "type.googleapis.com";
+ }
+ return typeUrlPrefix + "/tabletmanagerdata.VDiffTableLastPK";
+ };
+
+ return VDiffTableLastPK;
+ })();
+
tabletmanagerdata.UpdateVReplicationWorkflowRequest = (function() {
/**