This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 3412a022f41 [fix](restore) fix Restore from __keep_on_local__ throws null pointer… (#26943) 3412a022f41 is described below commit 3412a022f41a2df16666a9fad512a14041f439b1 Author: yuxuan-luo <119841515+yuxuan-...@users.noreply.github.com> AuthorDate: Tue Dec 5 10:55:28 2023 +0800 [fix](restore) fix Restore from __keep_on_local__ throws null pointer… (#26943) Co-authored-by: walter <patricknicho...@foxmail.com> Co-authored-by: hugoluo <hugo...@tencent.com> Co-authored-by: walter <patricknicho...@foxmail.com> --- .../org/apache/doris/analysis/RestoreStmt.java | 4 ++ .../test_backup_restore_keep_on_local.groovy | 78 ++++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java index 3b5f46a37c5..9f5f6ee7253 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RestoreStmt.java @@ -112,6 +112,10 @@ public class RestoreStmt extends AbstractBackupStmt { public void analyze(Analyzer analyzer) throws UserException { if (repoName.equals(Repository.KEEP_ON_LOCAL_REPO_NAME)) { isLocal = true; + if (jobInfo == null) { + ErrorReport.reportDdlException(ErrorCode.ERR_COMMON_ERROR, + "restore from the local repo via SQL call is not supported"); + } } super.analyze(analyzer); } diff --git a/regression-test/suites/backup_restore/test_backup_restore_keep_on_local.groovy b/regression-test/suites/backup_restore/test_backup_restore_keep_on_local.groovy new file mode 100644 index 00000000000..d18006c101c --- /dev/null +++ b/regression-test/suites/backup_restore/test_backup_restore_keep_on_local.groovy @@ -0,0 +1,78 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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. + +suite("test_backup_restore_keep_on_local", "backup_restore") { + String repoName = "__keep_on_local__" + String dbName = "backup_restore_keep_on_local_db" + String tableName = "test_backup_restore_table" + + def syncer = getSyncer() + + sql "CREATE DATABASE IF NOT EXISTS ${dbName}" + sql "DROP TABLE IF EXISTS ${dbName}.${tableName}" + sql """ + CREATE TABLE ${dbName}.${tableName} ( + `id` LARGEINT NOT NULL, + `count` LARGEINT SUM DEFAULT "0") + AGGREGATE KEY(`id`) + DISTRIBUTED BY HASH(`id`) BUCKETS 2 + PROPERTIES + ( + "replication_num" = "1" + ) + """ + + List<String> values = [] + for (int i = 1; i <= 10; ++i) { + values.add("(${i}, ${i})") + } + sql "INSERT INTO ${dbName}.${tableName} VALUES ${values.join(",")}" + def result = sql "SELECT * FROM ${dbName}.${tableName}" + assertEquals(result.size(), values.size()); + + String snapshotName = "test_backup_restore_snapshot" + sql """ + BACKUP SNAPSHOT ${dbName}.${snapshotName} + TO `${repoName}` + ON (${tableName}) + """ + + while (!syncer.checkSnapshotFinish(dbName)) { + Thread.sleep(3000) + } + + sql "TRUNCATE TABLE ${dbName}.${tableName}" + + try { + sql """ + RESTORE SNAPSHOT ${dbName}.${snapshotName} + FROM `${repoName}` + ON ( `${tableName}`) + PROPERTIES + ( + "replication_num" = "1" + ) + """ + } catch (Exception e) { + // Check the error message + assertTrue(e.message.contains("not supported")) + } + + sql "DROP TABLE ${dbName}.${tableName} FORCE" + sql "DROP DATABASE ${dbName} FORCE" +} + --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org