mirror of https://github.com/tikv/client-go.git
122 lines
2.0 KiB
Bash
Executable File
122 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright 2024 TiKV 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.
|
|
|
|
output="cmds_generated.go"
|
|
|
|
cat <<EOF > $output
|
|
// Code generated by gen.sh. DO NOT EDIT.
|
|
|
|
package tikvrpc
|
|
|
|
import (
|
|
"github.com/pingcap/kvproto/pkg/kvrpcpb"
|
|
)
|
|
EOF
|
|
|
|
cmds=(
|
|
Get
|
|
Scan
|
|
Prewrite
|
|
PessimisticLock
|
|
PessimisticRollback
|
|
Commit
|
|
Cleanup
|
|
BatchGet
|
|
BatchRollback
|
|
ScanLock
|
|
ResolveLock
|
|
GC
|
|
DeleteRange
|
|
RawGet
|
|
RawBatchGet
|
|
RawPut
|
|
RawBatchPut
|
|
RawDelete
|
|
RawBatchDelete
|
|
RawDeleteRange
|
|
RawScan
|
|
RawGetKeyTTL
|
|
RawCompareAndSwap
|
|
RawChecksum
|
|
UnsafeDestroyRange
|
|
RegisterLockObserver
|
|
CheckLockObserver
|
|
RemoveLockObserver
|
|
PhysicalScanLock
|
|
Cop
|
|
BatchCop
|
|
MvccGetByKey
|
|
MvccGetByStartTs
|
|
SplitRegion
|
|
TxnHeartBeat
|
|
CheckTxnStatus
|
|
CheckSecondaryLocks
|
|
FlashbackToVersion
|
|
PrepareFlashbackToVersion
|
|
Flush
|
|
BufferBatchGet
|
|
)
|
|
|
|
cat <<EOF >> $output
|
|
|
|
func patchCmdCtx(req *Request, cmd CmdType, ctx *kvrpcpb.Context) bool {
|
|
switch cmd {
|
|
EOF
|
|
|
|
for cmd in "${cmds[@]}"; do
|
|
cat <<EOF >> $output
|
|
case Cmd${cmd}:
|
|
if req.rev == 0 {
|
|
req.${cmd}().Context = ctx
|
|
} else {
|
|
cmd := *req.${cmd}()
|
|
cmd.Context = ctx
|
|
req.Req = &cmd
|
|
}
|
|
req.rev++
|
|
EOF
|
|
done
|
|
|
|
cat <<EOF >> $output
|
|
default:
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
EOF
|
|
|
|
cat <<EOF >> $output
|
|
|
|
func isValidReqType(cmd CmdType) bool {
|
|
switch cmd {
|
|
EOF
|
|
|
|
for cmd in "${cmds[@]}"; do
|
|
cat <<EOF >> $output
|
|
case Cmd${cmd}:
|
|
return true
|
|
EOF
|
|
done
|
|
|
|
cat <<EOF >> $output
|
|
case CmdCopStream, CmdMPPTask, CmdMPPConn, CmdMPPCancel, CmdMPPAlive, CmdEmpty:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
EOF
|