diff --git a/engine/table/src/main/java/io/deephaven/engine/table/impl/select/AbstractConditionFilter.java b/engine/table/src/main/java/io/deephaven/engine/table/impl/select/AbstractConditionFilter.java index 66a8513fa4c..04667b2c110 100644 --- a/engine/table/src/main/java/io/deephaven/engine/table/impl/select/AbstractConditionFilter.java +++ b/engine/table/src/main/java/io/deephaven/engine/table/impl/select/AbstractConditionFilter.java @@ -241,9 +241,9 @@ public void validateSafeForRefresh(BaseTable sourceTable) { } if (sourceTable.isRefreshing() && !AbstractFormulaColumn.ALLOW_UNSAFE_REFRESHING_FORMULAS) { // note that constant offset array accesss does not use i/ii or end up in usedColumnArrays - boolean isUnsafe = !sourceTable.isAppendOnly() && (usesI || usesII); - isUnsafe |= !sourceTable.isAddOnly() && usesK; - isUnsafe |= !usedColumnArrays.isEmpty(); + boolean isUnsafe = (usesI || usesII) && !sourceTable.isAppendOnly() && !sourceTable.isBlink(); + isUnsafe |= usesK && !sourceTable.isAddOnly() && !sourceTable.isBlink(); + isUnsafe |= !usedColumnArrays.isEmpty() && !sourceTable.isBlink(); if (isUnsafe) { throw new IllegalArgumentException("Formula '" + formula + "' uses i, ii, k, or column array " + "variables, and is not safe to refresh. Note that some usages, such as on an append-only " + diff --git a/engine/table/src/main/java/io/deephaven/engine/table/impl/select/AbstractFormulaColumn.java b/engine/table/src/main/java/io/deephaven/engine/table/impl/select/AbstractFormulaColumn.java index 791be4beaf9..0661f8e5548 100644 --- a/engine/table/src/main/java/io/deephaven/engine/table/impl/select/AbstractFormulaColumn.java +++ b/engine/table/src/main/java/io/deephaven/engine/table/impl/select/AbstractFormulaColumn.java @@ -90,9 +90,9 @@ public void validateSafeForRefresh(BaseTable sourceTable) { } if (sourceTable.isRefreshing() && !ALLOW_UNSAFE_REFRESHING_FORMULAS) { // note that constant offset array accesss does not use i/ii or end up in usedColumnArrays - boolean isUnsafe = !sourceTable.isAppendOnly() && (usesI || usesII); - isUnsafe |= !sourceTable.isAddOnly() && usesK; - isUnsafe |= !usedColumnArrays.isEmpty(); + boolean isUnsafe = (usesI || usesII) && !sourceTable.isAppendOnly() && !sourceTable.isBlink(); + isUnsafe |= usesK && !sourceTable.isAddOnly() && !sourceTable.isBlink(); + isUnsafe |= !usedColumnArrays.isEmpty() && !sourceTable.isBlink(); if (isUnsafe) { throw new IllegalArgumentException("Formula '" + formulaString + "' uses i, ii, k, or column array " + "variables, and is not safe to refresh. Note that some usages, such as on an append-only " +