Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
Original file line number Diff line number Diff line change
Expand Up @@ -2412,6 +2412,17 @@ public boolean isDistributionColumn(String columnName) {
@Override
public boolean isPartitionColumn(String columnName) {
return getPartitionInfo().getPartitionColumns().stream()
.anyMatch(c -> c.getName().equalsIgnoreCase(columnName));
.anyMatch(c -> c.getName().equalsIgnoreCase(columnName));
}

/**
* For olap table, we need to acquire read lock when plan.
* Because we need to make sure the partition's version remain unchanged when plan.
*
* @return
*/
@Override
public boolean needReadLockWhenPlan() {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,15 @@ default int getBaseColumnIdxByName(String colName) {

void write(DataOutput out) throws IOException;

/**
* return true if this kind of table need read lock when doing query plan.
*
* @return
*/
default boolean needReadLockWhenPlan() {
return false;
}

/**
* Doris table type.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -536,6 +536,9 @@ public Lock(LogicalPlan plan, CascadesContext cascadesContext) {
cascadesContext.extractTables(plan);
}
for (TableIf table : cascadesContext.tables.values()) {
if (!table.needReadLockWhenPlan()) {
continue;
}
if (!table.tryReadLock(1, TimeUnit.MINUTES)) {
close();
throw new RuntimeException(String.format("Failed to get read lock on table: %s", table.getName()));
Expand Down