924060929 commented on code in PR #66913:
URL: https://github.com/apache/doris/pull/66913#discussion_r3996579082


##########
fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/source/IcebergScanNode.java:
##########
@@ -1764,20 +1880,11 @@ private Table useFrozenTableGeneration(Table 
currentTable) {
         if 
(snapshot.filter(IcebergMvccSnapshot.class::isInstance).isPresent()) {
             IcebergSnapshotCacheValue cacheValue =
                     ((IcebergMvccSnapshot) 
snapshot.get()).getSnapshotCacheValue();
+            frozenEnableMappingVarbinary = 
cacheValue.isEnableMappingVarbinary();
+            frozenEnableMappingTimestampTz = 
cacheValue.isEnableMappingTimestampTz();
             Optional<Table> frozenTable = cacheValue.getIcebergTable();
             if (frozenTable.isPresent()) {
-                // Planning the frozen generation (regular relations and 
snapshot-selectable
-                // system tables alike) uses the catalog's current 
authenticator, storage state
-                // and pre-authenticated executor. Those are only coherent 
with the retained
-                // frozen operations/FileIO while the catalog still serves the 
generation this
-                // statement pinned; after a credential/storage ALTER the 
statement must fail and
-                // be retried. Count-mode values retain no frozen handle and 
plan the live table,
-                // so they are not fenced; values without a captured context 
resolve nothing here.
-                if (cacheValue.getCapturedAuthenticator() != null) {
-                    cacheValue.ensurePlannableUnder(
-                            source.getCatalog().getExecutionAuthenticator(),
-                            source.getTargetTable().getName());
-                }
+                runtimeContext = cacheValue.getRuntimeContext();

Review Comment:
   Fixed in 4bb785f2eb3. IcebergRuntimeContext now retains the exact manifest 
MetaCacheEntry together with the frozen table/FileIO generation, and both data 
and delete manifest loads use that retained entry. Iceberg operational 
invalidation now retires the whole cache group, so a pre-reset scan holds a 
closed G1 entry: it may finish with an uncached direct load, but cannot hit or 
publish into G2. The barrier test uses the real invalidateCatalogEntries path 
and verifies distinct G1/G2 entries, no cross-generation hit/write, and no 
retained-size accounting after close. Focused FE UTs: 214 passed; full 
./build.sh --fe -j4 passed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to