[feature](hive/iceberg)add doris's version in table properties (#32774)

issue #31442
when create a external table, we can add doris's version in table's properties.
This commit is contained in:
wuwenchi
2024-03-26 17:09:53 +08:00
committed by morningman
parent b98d225183
commit bd364897d4
3 changed files with 9 additions and 1 deletions

View File

@ -32,6 +32,7 @@ import org.apache.doris.cluster.ClusterNamespace;
import org.apache.doris.common.Config;
import org.apache.doris.common.DdlException;
import org.apache.doris.common.UserException;
import org.apache.doris.common.Version;
import org.apache.doris.common.io.Text;
import org.apache.doris.common.io.Writable;
import org.apache.doris.common.util.Util;
@ -85,6 +86,8 @@ public abstract class ExternalCatalog
private static final Logger LOG = LogManager.getLogger(ExternalCatalog.class);
public static final String ENABLE_AUTO_ANALYZE = "enable.auto.analyze";
public static final String DORIS_VERSION = "doris.version";
public static final String DORIS_VERSION_VALUE = Version.DORIS_BUILD_VERSION + "-" + Version.DORIS_BUILD_SHORT_HASH;
// Unique id of this catalog, will be assigned after catalog is loaded.
@SerializedName(value = "id")

View File

@ -20,6 +20,7 @@ package org.apache.doris.datasource.hive;
import org.apache.doris.catalog.Column;
import org.apache.doris.common.Pair;
import org.apache.doris.common.UserException;
import org.apache.doris.datasource.ExternalCatalog;
import org.apache.doris.fs.remote.BrokerFileSystem;
import org.apache.doris.fs.remote.RemoteFileSystem;
@ -192,7 +193,9 @@ public final class HiveUtil {
// table.setViewOriginalText(hiveTable.getViewSql());
// table.setViewExpandedText(hiveTable.getViewSql());
table.setTableType("MANAGED_TABLE");
table.setParameters(hiveTable.getProperties());
Map<String, String> props = new HashMap<>(hiveTable.getProperties());
props.put(ExternalCatalog.DORIS_VERSION, ExternalCatalog.DORIS_VERSION_VALUE);
table.setParameters(props);
return table;
}

View File

@ -27,6 +27,7 @@ import org.apache.doris.catalog.StructType;
import org.apache.doris.common.DdlException;
import org.apache.doris.common.UserException;
import org.apache.doris.datasource.DorisTypeVisitor;
import org.apache.doris.datasource.ExternalCatalog;
import org.apache.doris.datasource.ExternalDatabase;
import org.apache.doris.datasource.operations.ExternalMetadataOps;
@ -117,6 +118,7 @@ public class IcebergMetadataOps implements ExternalMetadataOps {
DorisTypeVisitor.visit(structType, new DorisTypeToIcebergType(structType));
Schema schema = new Schema(visit.asNestedType().asStructType().fields());
Map<String, String> properties = stmt.getProperties();
properties.put(ExternalCatalog.DORIS_VERSION, ExternalCatalog.DORIS_VERSION_VALUE);
PartitionSpec partitionSpec = IcebergUtils.solveIcebergPartitionSpec(properties, schema);
catalog.createTable(TableIdentifier.of(dbName, tableName), schema, partitionSpec, properties);
db.setUnInitialized(true);