Files
tidb/lightning/tests/lightning_incremental/run.sh
2024-04-02 04:24:23 +00:00

88 lines
2.8 KiB
Bash

#!/bin/bash
#
# Copyright 2020 PingCAP, Inc.
#
# 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.
set -eu
CUR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
check_cluster_version 4 0 0 "incremental restore" || exit 0
run_lightning_and_check_meta() {
run_lightning --backend local "$@"
# check metadata table is not exist
run_sql "SHOW DATABASES like 'lightning_metadata';"
check_not_contains "Database: lightning_metadata"
}
run_sql "DROP DATABASE IF EXISTS incr;"
run_sql "DROP DATABASE IF EXISTS lightning_metadata;"
run_lightning_and_check_meta
for tbl in auto_random pk_auto_inc rowid_uk_inc uk_auto_inc; do
run_sql "SELECT count(*) from incr.$tbl"
check_contains "count(*): 3"
done
declare -A next_ids=()
for tbl in auto_random pk_auto_inc rowid_uk_inc uk_auto_inc; do
if [ "$tbl" = "auto_random" ]; then
run_sql "SELECT id & b'000001111111111111111111111111111111111111111111111111111111111' as inc FROM incr.$tbl"
else
run_sql "SELECT id as inc FROM incr.$tbl"
fi
check_contains 'inc: 1'
check_contains 'inc: 2'
check_contains 'inc: 3'
next_ids["$tbl"]="$(run_sql "SHOW TABLE incr.$tbl NEXT_ROW_ID" | grep NEXT_GLOBAL_ROW_ID | awk '{print $2}')"
done
for tbl in pk_auto_inc rowid_uk_inc; do
run_sql "SELECT group_concat(v order by v) as result from incr.$tbl group by 'all';"
check_contains "result: a,b,c"
done
run_sql "SELECT sum(pk) from incr.uk_auto_inc;"
check_contains "sum(pk): 6"
# incrementally import all data in data1
run_lightning_and_check_meta -d "$CUR/data1"
for tbl in auto_random pk_auto_inc rowid_uk_inc uk_auto_inc; do
run_sql "SELECT count(*) from incr.$tbl"
check_contains "count(*): 6"
done
for tbl in auto_random pk_auto_inc rowid_uk_inc uk_auto_inc; do
if [ "$tbl" = "auto_random" ]; then
run_sql "SELECT id & b'000001111111111111111111111111111111111111111111111111111111111' as inc FROM incr.$tbl"
else
run_sql "SELECT id as inc FROM incr.$tbl"
fi
next_id=${next_ids["$tbl"]}
check_contains "inc: $next_id"
check_contains "inc: $((next_id + 1))"
check_contains "inc: $((next_id + 2))"
done
for tbl in pk_auto_inc rowid_uk_inc; do
run_sql "SELECT group_concat(v order by v) as result from incr.$tbl group by 'all';"
check_contains "result: a,b,c,d,e,f"
done
run_sql "SELECT sum(pk) from incr.uk_auto_inc;"
check_contains "sum(pk): 21"