CrownChu commented on code in PR #7933:
URL: https://github.com/apache/paimon/pull/7933#discussion_r3308168765
##########
paimon-core/src/main/java/org/apache/paimon/globalindex/GlobalIndexBuilderUtils.java:
##########
@@ -78,6 +130,53 @@ public static GlobalIndexWriter createIndexWriter(
return
globalIndexer.createWriter(createGlobalIndexFileReadWrite(table));
}
+ public static GlobalIndexWriter createIndexWriter(
+ FileStoreTable table, String indexType, List<DataField> fields,
Options options)
+ throws IOException {
+ GlobalIndexer globalIndexer = GlobalIndexer.create(indexType, fields,
options);
+ return
globalIndexer.createWriter(createGlobalIndexFileReadWrite(table));
+ }
+
+ /**
+ * Find the minimum firstRowId among files whose schema does not contain
all index columns.
+ * Files at or beyond this rowId cannot be indexed because the column was
added later via ALTER
+ * TABLE.
+ *
+ * @return the boundary rowId, or {@link Long#MAX_VALUE} if all files
contain the columns
+ */
+ public static long findMinNonIndexableRowId(
+ SchemaManager schemaManager, List<ManifestEntry> entries,
List<String> indexColumns) {
+ Map<Long, Boolean> schemaContainsColumns = new HashMap<>();
+ long minRowId = Long.MAX_VALUE;
+ for (ManifestEntry entry : entries) {
+ long sid = entry.file().schemaId();
+ boolean contains =
+ schemaContainsColumns.computeIfAbsent(
+ sid,
+ id ->
schemaManager.schema(id).fieldNames().containsAll(indexColumns));
+ if (!contains && entry.file().firstRowId() != null) {
+ minRowId = Math.min(minRowId,
entry.file().nonNullFirstRowId());
+ }
+ }
+ return minRowId;
+ }
+
Review Comment:
add log done
--
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]