[Enhance](catalog)add table cache in paimon jni (#25014)

- fix get old schema after refresh paimon table
- add table cache in paimon jni
This commit is contained in:
zhangdong
2023-10-08 10:36:18 +08:00
committed by GitHub
parent 239df5860b
commit 4e8cde127c
6 changed files with 221 additions and 22 deletions

View File

@ -55,19 +55,21 @@ public class PaimonExternalTable extends ExternalTable {
protected synchronized void makeSureInitialized() {
super.makeSureInitialized();
if (!objectCreated) {
originTable = ((PaimonExternalCatalog) catalog).getPaimonTable(dbName, name);
lastUpdateTime = System.currentTimeMillis();
objectCreated = true;
}
}
public Table getOriginTable() {
if (originTable == null) {
originTable = ((PaimonExternalCatalog) catalog).getPaimonTable(dbName, name);
}
makeSureInitialized();
return originTable;
}
@Override
public List<Column> initSchema() {
//init schema need update lastUpdateTime and get latest schema
objectCreated = false;
Table table = getOriginTable();
TableSchema schema = ((AbstractFileStoreTable) table).schema();
List<DataField> columns = schema.fields();

View File

@ -102,6 +102,10 @@ public class PaimonScanNode extends FileQueryScanNode {
fileDesc.setDbName(((PaimonExternalTable) source.getTargetTable()).getDbName());
fileDesc.setPaimonOptions(((PaimonExternalCatalog) source.getCatalog()).getPaimonOptionsMap());
fileDesc.setTableName(source.getTargetTable().getName());
fileDesc.setCtlId(source.getCatalog().getId());
fileDesc.setDbId(((PaimonExternalTable) source.getTargetTable()).getDbId());
fileDesc.setTblId(source.getTargetTable().getId());
fileDesc.setLastUpdateTime(source.getTargetTable().getLastUpdateTime());
tableFormatFileDesc.setPaimonParams(fileDesc);
rangeDesc.setTableFormatParams(tableFormatFileDesc);
}