cherry pick from #41120
This commit is contained in:
@ -776,16 +776,23 @@ public class RestoreJob extends AbstractJob {
|
||||
if (localTbl != null) {
|
||||
Preconditions.checkState(localTbl.getType() == TableType.VIEW);
|
||||
View localView = (View) localTbl;
|
||||
if (!localView.getSignature(BackupHandler.SIGNATURE_VERSION)
|
||||
.equals(remoteView.getSignature(BackupHandler.SIGNATURE_VERSION))) {
|
||||
status = new Status(ErrCode.COMMON_ERROR, "View "
|
||||
+ jobInfo.getAliasByOriginNameIfSet(backupViewName)
|
||||
+ " already exist but with different schema");
|
||||
return;
|
||||
String localViewSignature = localView.getSignature(BackupHandler.SIGNATURE_VERSION);
|
||||
// keep compatible with old version, compare the signature without reset view def
|
||||
if (!localViewSignature.equals(remoteView.getSignature(BackupHandler.SIGNATURE_VERSION))) {
|
||||
// reset view def to dest db name and compare signature again
|
||||
String srcDbName = jobInfo.dbName;
|
||||
remoteView.resetViewDefForRestore(srcDbName, db.getName());
|
||||
if (!localViewSignature.equals(remoteView.getSignature(BackupHandler.SIGNATURE_VERSION))) {
|
||||
status = new Status(ErrCode.COMMON_ERROR, "View "
|
||||
+ jobInfo.getAliasByOriginNameIfSet(backupViewName)
|
||||
+ " already exist but with different schema");
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
String srcDbName = jobInfo.dbName;
|
||||
remoteView.resetIdsForRestore(env, srcDbName, db.getFullName());
|
||||
remoteView.resetViewDefForRestore(srcDbName, db.getName());
|
||||
remoteView.resetIdsForRestore(env);
|
||||
restoredTbls.add(remoteView);
|
||||
}
|
||||
}
|
||||
|
||||
@ -213,6 +213,10 @@ public class Database extends MetaObject implements Writable, DatabaseIf<Table>
|
||||
return fullQualifiedName;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return ClusterNamespace.getNameFromFullName(fullQualifiedName);
|
||||
}
|
||||
|
||||
public void setNameWithLock(String newName) {
|
||||
writeLock();
|
||||
try {
|
||||
|
||||
@ -643,7 +643,7 @@ public class OlapTable extends Table implements MTMVRelatedTableIf {
|
||||
baseIndexId = newIdxId;
|
||||
}
|
||||
MaterializedIndexMeta indexMeta = origIdxIdToMeta.get(entry.getKey());
|
||||
indexMeta.resetIndexIdForRestore(newIdxId, srcDbName, db.getFullName());
|
||||
indexMeta.resetIndexIdForRestore(newIdxId, srcDbName, db.getName());
|
||||
indexIdToMeta.put(newIdxId, indexMeta);
|
||||
indexNameToId.put(entry.getValue(), newIdxId);
|
||||
}
|
||||
|
||||
@ -244,9 +244,11 @@ public class View extends Table {
|
||||
return copied;
|
||||
}
|
||||
|
||||
public void resetIdsForRestore(Env env, String srcDbName, String dbName) {
|
||||
public void resetIdsForRestore(Env env) {
|
||||
id = env.getNextId();
|
||||
}
|
||||
|
||||
public void resetViewDefForRestore(String srcDbName, String dbName) {
|
||||
// the source db name is not setted in old BackupMeta, keep compatible with the old one.
|
||||
if (srcDbName != null) {
|
||||
inlineViewDef = inlineViewDef.replaceAll(srcDbName, dbName);
|
||||
|
||||
Reference in New Issue
Block a user