This is an automated email from the ASF dual-hosted git repository.
yuqi1129 pushed a change to branch me/fix-entity-change-log-poller-11736
in repository https://gitbox.apache.org/repos/asf/gravitino.git
from 95d5dd341b [#11736] fix(core): bound change log listener retries and
stop on stale caches
add 3dd3b8f0f7 [#11813] fix(gvfs): override getScheme() to return 'gvfs'
(#11814)
add 195f18611d [#11817] fix(idp): Use millisecond precision for soft
deletes (#11815)
add fbecb1a8a5 [#11819] fix(ci): Use approved setup actions and add ASF
actions allowlist check (#11820)
add b7add29edb [#11672] improvement(optimizer): optimize trigger-expr
evaluation with table metadata & partition short-circuit (#11664)
add ee6b174091 [MINOR] chore: bump version to 2.0.0-SNAPSHOT (#11821)
add ae9a52191f [#11077] docs: Document Trino 482 fix for SHOW SCHEMAS on
Gravitino IRC (#11808)
add 4207d3fca8 [#11553] feat(lance): add health check endpoints for Lance
REST servers (#11558)
add 7baebffd22 [MINOR] fix(ci): align chart test actions with ASF
allowlist (#11825)
add c27520bd81 [#11803] fix(clickhouse): add ON CLUSTER support for ALTER
TABLE (#11807)
add 4b9ad2ceae [#10198] feat(spark): Report required table privileges
(#11627)
add 9696477781 [#11775] improvement(authz): Short-circuit list
authorization via parent-scope grant (#11778)
add 6ce2b611f2 [#11059] feat(iceberg-rest): Support overwrite on
registerTable endpoint (#11809)
add 1729e33b27 [#11486] refactor(catalog): Add shared Hadoop Kerberos auth
module (#11765)
add 1cf883b984 [#11831] feat(core): Add v2.0.0 JDBC schema for external_id
and enabled (#11837)
add 4c7358b64b [#10894] docs: Add design doc for role assumption (SET
ROLE) permission narrowing (#11790)
add 86a235bf9c [MINOR] refactor(spark-connector): Align JDBC connector
common logic (#11847)
add 7b7ec06582 [MINOR] refactor(flink-connector): Align JDBC connector
common logic (#11849)
add 0e96563519 [#10866] feat(charts): Support Gateway API HTTPRoute in
Helm charts (#11308)
add 2de6492d6f [MINOR] fix(aws): Support MinIO role ARNs in IRSA
credential vending (#11883)
add b0aa708cd0 [#11836] fix(server): Return visible service admins as list
(#11843)
add 69edf53a10 [#11748] feat(catalog-hadoop): support Tencent Cloud COS
as fileset storage backend (Java side) (#11713)
add b096dd2c42 [#11879] fix(clickhouse): fix type conversion for Decimal,
DateTime64, LowCardinality, and IPv4/IPv6 (#11884)
add c2fc58bf13 [#11839] fix(clickhouse): escape single quotes in database
and table name SQL to prevent injection (#11840)
add 15778b188f [#11893] fix(lance): Add external table guard to
deregisterTable (#11896)
add 5bcfc167a4 [#11899] fix(flink): exclude vulnerable log4j 2.x from
hive-common compile classpath (#11898)
add bcb9d2da87 [MINOR] fix(workflow): refresh docker login action SHA for
ASF allowlist (#11908)
add 90c43acca3 [#11832] feat(core): Add user external ID, enable/disable,
and delete-by-external-id APIs (#11848)
add 8fb593a47d [#11834] feat(core): Add group external ID and
delete-by-external-id APIs (#11914)
add 409f83447f [#11784] improvement(common): harden remote file fetch
against SSRF DNS-rebinding (#11785)
add ab0d52bae5 [#11835] feat: external-id user/group REST create APIs and
AccessControlIT (#11921)
add 28a4ac73c8 [#11891] fix(lance): retry repair-on-load metadata update
on optimistic-lock conflict (#11892)
add 407f0724fd [#10548] feat(iceberg): support registerView in Iceberg
REST catalog (#11828)
add 6344766009 [#11907] feat(trino-connector): Support selecting Trino IT
container subset via TEST_CONTAINERS (#11909)
add 8411916170 [#11919] feat(core): AccessControlEventDispatcher events
for external-id APIs (#11920)
add ddbf6fc6e6 [#11590] fix(doris): fix INDEX syntax and support
AUTO_INCREMENT for Doris 3.0+ (#11731)
add 27ad2cac7a [MINOR] chore(web-v2): Allow newer Node.js versions (#11904)
add 82fc98bddc [#11939] fix(core,auth): tolerate concurrent directory
creation instead of failing spuriously (#11940)
add a1ba08b2e7 [#11900] feat(iceberg): Support HDFS Kerberos auth for IRC
JDBC catalog (#11901)
add 70a81aedd3 [#11590] improvement(doris): upgrade type system for Doris
3.0+/4.0.x compatibility (#11763)
add 99941e2d38 [#11949] feat(iceberg): native variant type support (#11932)
add fc1c4a2ede [#11567][#11574] feat(mcp-server): write tools for tag,
catalog, schema, table, model, topic, fileset (#11621)
add 799c50c737 [#11954] feat(iceberg): enable creating format-version 3
(V3) tables via the Gravitino API (#11957)
add 8e2d4ddafb [#11912] feat(clickhouse): support set data skipping index
type (#11916)
add effa6f2d6f build(deps): bump fastmcp from 3.2.0 to 3.4.2 in
/mcp-server (#11869)
add e211d267a0 [#10685] feat(iceberg-rest): Support vended credentials on
planTableScan endpoint (#10800)
add 4894435f7a [#11880] fix(clickhouse): preserve SETTINGS clause on table
round-trip (#11885)
add b464820eb0 [#11844] feat(tag): Support tags for views and functions
(#11897)
add f5948f872b [#11985] fix(openapi): drop stray OpenAPI 3.1 null token
from statistics value (#11987)
add 61ee16ae63 [#11980] fix(core): sort column ordinal positions while
fetching from entity store (#11979)
add fe44f02ecf [#11976] fix(core): refresh built-in job template when
content drifts even if version is unchanged (#11978)
add c2c1b8a672 [#11955] feat(iceberg): native geometry and geography type
support for Iceberg V3 (#11958)
add cf289fb759 [#11590] fix(doris): fix partition parsing for Doris 3.0+
format (#11732)
add 9fbed05f36 [MINOR] fix: polish log and error message quality across
Java modules (#10387)
add 7ba1da7166 [#11962] feat(iceberg): support V3 nanosecond timestamp
types (#11938)
add e71af9ca98 [#11902] feat(client-java): Support tags for views and
functions (#11903)
add 40ab9a58f2 [#11983] test(iceberg): add end-to-end coverage for
round-trip of remaining V2 column types (#11984)
add 425112e554 [MINOR] docs: update Doris catalog documentation for
3.0.x/4.0.x compatibility (#11995)
add 69ef06b81b [#11951] feat(iceberg): map V3 unknown type to Gravitino
NullType (#11969)
add 438da702f1 [#12009] improvement(core): Support custom case sensitivity
normalization in Capability (#12010)
add 771c5e22cd [#11966] feat(auth): add X-Gravitino-Active-Roles header
grammar and parser (#11970)
add 8d6591d9f0 [#11946] improvement(api): Add properties field to
TableChange.AddIndex for custom index parameters (#12013)
add e5fe677dab [#11963] fix(cli): support parsing the variant column type
(#11964)
add 4ff7aac259 [#12014] fix(core): Don't wrap plain ClassNotFoundException
in IsolatedClassLoader (#12015)
add 4059726b7f [#5820] test(client-python): Improve IT server lifecycle
(#11977)
add b473bfd98f [MINOR] chore: Add nevzheng as GitHub triage collaborator
(#12028)
add 41cb729b6e [#3767] refactor(client-python): Share metalake operation
test fixtures (#11993)
add f229b4c427 build(deps): bump cachetools from 7.0.1 to 7.1.4 in
/clients/client-python (#11868)
add ece6c4168b build(deps): update fakeredis requirement from <2.35.0 to
<2.37.0 in /mcp-server (#11866)
add 1f5cee0770 [#3767] refactor(client-python): Share table test fixtures
(#11992)
add 64009ee93c [MINOR] fix(web-v2): Normalize service admins configuration
(#12046)
add 11c39c2d2a [#3767] refactor(client-python): Share metalake integration
test setup (#12005)
add d4190675a0 [#12037] improvement(authz): Improve the JCasbin checks
(#12001)
add 4074abf914 [#11985] fix(openapi): repair three codegen-breaking
defects invisible to lint (#11988)
add c10925adb7 [#12039] feat(client-python): Add view API definitions
(#12040)
add 840fe67f55 Web UI support for built-in IdP Basic login (#11812)
add 40f9cb4323 [MINOR] fix(web-v2): Remove stale twc prefix from toast
(#11950)
add 5863632372 [MINOR] test(client-python): Fix API unit test discovery
(#12041)
add 849aa37c71 [#11985] fix(openapi): restore the ExternalType variant to
DataType (#11991)
add 988bbe0438 [#11985] fix(openapi): clear the remaining non-lineage
recommended-strict findings (#11990)
add b30e457318 [#11985] fix(openapi): correct the OpenLineage translation
in the lineage schemas (#11989)
add da99abcc36 [#11943] improvement(iceberg,core): validate warehouse at
catalog creation and fail fast with an actionable error (#11959)
add 6842f00b74 [MINOR] improvement(cache): Add logs for Caffeine cache
removals (#12043)
add c60b82cc63 [#12038] improvement(scripts): increase relational store
column comment length limit to 4096 (#12047)
add a03467c5e5 [#11967] feat(auth): narrow allow enforcement to active
roles (deny stays global) (#12044)
add fc88ddc8d4 [#12035] improvement(catalog-jdbc): block DBCP2
class-loading properties in datasource config (#12036)
add e675c0465c [#12091] improvement(ci): Route contrib catalog tests to
contrib CI (#12092)
add b49d895eaf [MINOR] improvement(authz): Add debug logging for
list-authorization short-circuit (#12101)
add 23f871f805 [#11802] fix(clickhouse): support user-defined GRANULARITY
and validate shard key type (#11806)
add 648fdd7c1a [#12089] improvement(client-python): Implement client-side
view models (#12090)
add 394e0c6a99 build(deps-dev): bump coverage from 7.13.4 to 7.14.3 in
/clients/client-python (#11872)
add 65d305fdaa [#12097] improvement(core): Validate names before
normalizing in CapabilityHelpers (#12098)
add d9c9237410 [#10093] feat(core): Introduce ClassLoaderPool to share
ClassLoaders across same-type catalogs (#10480)
add afbd958c45 [MINOR] fix(jdbc): Quote comments in generated DDL (#12007)
add 5fe2959078 [#11923] docs(core): add multi-node entity store cache
invalidation design (#11738)
add b0aaac4b9a [#12106] improvement(common): gate Kerberos login-module
debug on sun.security.krb5.debug (#12107)
add 941f030f3e [#12116] improvement(client-python): Add view create/drop
operations (#12117)
add f8d7523b0d [#12095] feat(auth): parse X-Gravitino-Active-Roles into
the request path (#12096)
add 1249341afd [#12102] feat(jdbc-doris): Support frequently-used table
properties (#12103)
add cf1b173ca8 [MINOR] docs: update credential vending, add vended
credentials to Trino (#12165)
add 9e790c649d [#12099] feat(mcp-server): add read tools for table
partitions (#12128)
add c54b342ac8 [#12154] fix(core): Clean up orphaned metadata object
relations (#12160)
add 2214a29dcc [#12158] improvement(client-python): Add view query/alter
operations (#12159)
add a33fa0d1d7 [#12169] fix(auth): clear only role policies on cache
eviction (#12172)
add bc2b09b7a1 [#12024] improvement(common): harden JDBC unsafe-parameter
detection against connectionProperties smuggling (#12025)
add 8f3211278a [#12131] feat(kms): Define key inspection API (#12132)
add fd8afd6e33 [MINOR] docs: Fix minor typos and inaccurate build
instructions in documentation (#12192)
add 074a288d85 [#12201] refactor(core): inject table hook dependencies
(#12202)
add 4d72543e0c [#12131] feat(kms): Configure and resolve named sources
(#12133)
add a7d221cd0a [#12181] feat(client-python): Support tags for views and
functions (#12182)
add 5dfa38803e [#12145] fix(test): prevent overlapping embedded server
lifecycle (#12146)
add e4e66e446a [#3767] refactor(client-python): Share authorization
integration test setup (#11994)
add e1afb700e9 [#11881] fix(clickhouse): distinguish MATERIALIZED/ALIAS
from DEFAULT via default_kind (#11886)
add ab2645a799 [#12112] fix(authz): Align group load authorization (#12113)
add c4f3738189 Merge remote-tracking branch 'origin/main' into
me/fix-entity-change-log-poller-11736
No new revisions were added by this update.
Summary of changes:
.asf.yaml | 1 +
.../workflows/asf-allowlist-check.yml | 39 +-
.../workflows/backend-integration-test-action.yml | 20 +-
.github/workflows/backend-integration-test.yml | 33 -
.github/workflows/build.yml | 3 +
.github/workflows/chart-release.yaml | 2 +-
.github/workflows/chart-test.yaml | 51 +-
.github/workflows/contrib-catalog-test.yml | 132 +++
.github/workflows/docker-image.yml | 2 +-
.github/workflows/trino-multi-version-test.yml | 2 +-
CONTRIBUTING.md | 6 +-
README.md | 2 -
.../org/apache/gravitino/authorization/Group.java | 16 +
.../org/apache/gravitino/authorization/User.java | 25 +
.../credential/COSSecretKeyCredential.java | 120 +++
.../encryption/kms/KmsApiIdentifiers.java | 57 +
.../gravitino/encryption/kms/KmsReference.java | 110 ++
.../org/apache/gravitino/function/Function.java | 9 +
.../java/org/apache/gravitino/rel/TableChange.java | 53 +-
.../main/java/org/apache/gravitino/rel/View.java | 9 +
.../org/apache/gravitino/rel/indexes/Index.java | 3 +
.../java/org/apache/gravitino/rel/types/Type.java | 15 +
.../java/org/apache/gravitino/rel/types/Types.java | 189 ++++
.../org.apache.gravitino.credential.Credential | 1 +
.../java/org/apache/gravitino/TestTableChange.java | 101 ++
.../encryption/kms/TestKmsApiIdentifiers.java | 62 ++
.../gravitino/encryption/kms/TestKmsReference.java | 87 ++
.../java/org/apache/gravitino/rel/TestTypes.java | 31 +
.../ranger/RangerAuthorizationPlugin.java | 16 +-
.../ranger/RangerClientExtension.java | 4 +-
.../authorization/ranger/RangerHelper.java | 2 +-
build.gradle.kts | 11 +
.../s3/credential/AwsIrsaCredentialGenerator.java | 9 +-
.../webidentity/WebIdentityTokenSources.java | 5 +-
.../credential/TestAwsIrsaCredentialGenerator.java | 37 +
.../webidentity/TestWebIdentityTokenSources.java | 11 +-
.../gcs/credential/GCSTokenGenerator.java | 2 +-
bundles/tencent-bundle/build.gradle.kts | 78 ++
.../tencent}/build.gradle.kts | 36 +-
.../cos/credential/COSSecretKeyProvider.java | 60 ++
.../gravitino/cos/fs/COSCredentialsProvider.java | 91 ++
.../gravitino/cos/fs/COSFileSystemProvider.java | 128 +++
.../java/org/apache/gravitino/cos/fs/COSUtils.java | 45 +
....gravitino.catalog.hadoop.fs.FileSystemProvider | 4 +-
....apache.gravitino.credential.CredentialProvider | 5 +-
.../cos/credential/TestCOSCredentialProvider.java | 63 ++
.../cos/fs/TestCOSCredentialsProvider.java | 154 +++
.../cos/fs/TestCOSFileSystemProvider.java | 92 ++
.../catalog/clickhouse/ClickHouseConstants.java | 9 +
.../converter/ClickHouseTypeConverter.java | 23 +-
.../catalog/clickhouse/converter/TypeUtils.java | 6 +-
.../operations/ClickHouseDatabaseOperations.java | 9 +
.../operations/ClickHouseTableOperations.java | 441 +++++++-
.../converter/TestClickHouseTypeConverter.java | 29 +
.../test/CatalogClickHouseClusterIT.java | 358 +++++++
.../integration/test/CatalogClickHouseIT.java | 554 +++++++++-
.../test/service/ClickHouseService.java | 12 +
.../TestClickHouseDatabaseOperations.java | 18 +
.../operations/TestClickHouseTableOperations.java | 421 +++++++-
.../TestClickHouseTableOperationsCluster.java | 502 +++++++++
.../TestClickHouseTableOperationsUnit.java | 87 ++
.../credential/config/COSCredentialConfig.java | 79 ++
.../apache/gravitino/storage/COSProperties.java | 29 +-
catalogs/catalog-fileset/build.gradle.kts | 7 +
.../catalog/fileset/FilesetCatalogOperations.java | 12 +-
.../integration/test/FilesetCOSCatalogIT.java | 207 ++++
.../catalog/hive/HiveCatalogOperations.java | 2 -
.../catalog/jdbc/JdbcCatalogOperations.java | 17 -
.../catalog/jdbc/utils/DataSourceUtils.java | 56 +
.../catalog/jdbc/utils/JdbcConnectorUtils.java | 61 ++
.../catalog/jdbc/TestJdbcCatalogOperations.java | 71 +-
.../jdbc/utils/TestDataSourceUrlValidation.java | 287 ++++-
.../catalog/jdbc/utils/TestJdbcConnectorUtils.java | 69 ++
.../doris/DorisTablePropertiesMetadata.java | 44 +-
.../doris/converter/DorisTypeConverter.java | 113 +-
.../doris/operation/DorisTableOperations.java | 330 +++++-
.../gravitino/catalog/doris/utils/DorisUtils.java | 19 +-
.../gravitino/catalog/doris/TestDorisCatalog.java | 124 ++-
.../doris/converter/TestDorisTypeConverter.java | 60 +-
.../doris/integration/test/CatalogDoris3xIT.java | 564 ++++++++++
.../doris/integration/test/CatalogDoris4xIT.java | 565 ++++++++++
.../doris/integration/test/CatalogDorisIT.java | 158 ++-
.../catalog/doris/operation/TestDoris.java | 2 +-
.../operation/TestDorisDatabaseOperations.java | 2 +-
.../TestDorisDatabaseOperationsSqlGeneration.java | 21 +-
.../doris/operation/TestDorisTableOperations.java | 42 +-
.../TestDorisTableOperationsSqlGeneration.java | 390 ++++++-
.../catalog/doris/utils/TestDorisUtils.java | 42 +
.../mysql/operation/MysqlTableOperations.java | 12 +-
.../TestMysqlTableOperationsSqlGeneration.java | 60 +-
.../operation/PostgreSqlSchemaOperations.java | 5 +-
.../operation/PostgreSqlTableOperations.java | 20 +-
...estPostgreSqlSchemaOperationsSqlGeneration.java | 22 +-
...TestPostgreSqlTableOperationsSqlGeneration.java | 59 +-
.../operations/StarRocksTableOperations.java | 22 +-
.../catalog/starrocks/utils/StarRocksUtils.java | 7 +-
.../operation/TestStarRocksTableOperations.java | 50 +
.../TestStarRocksTableOperationsSqlGeneration.java | 77 +-
.../starrocks/utils/TestStarRocksUtils.java | 25 +
.../lakehouse/lance/LanceTableOperations.java | 88 +-
.../lance/TestLanceConcurrentRepairStress.java | 283 +++++
.../lakehouse/lance/TestLanceTableOperations.java | 85 ++
.../catalog/lakehouse/iceberg/IcebergCatalog.java | 16 +
.../iceberg/IcebergCatalogOperations.java | 49 +-
.../catalog/lakehouse/iceberg/IcebergTable.java | 11 +
.../iceberg/IcebergTablePropertiesMetadata.java | 74 +-
.../iceberg/converter/FromIcebergType.java | 27 +
.../lakehouse/iceberg/converter/ToIcebergType.java | 59 +-
.../iceberg/converter/ToIcebergTypeVisitor.java | 7 +
.../lakehouse/iceberg/TestIcebergCatalog.java | 11 +
.../iceberg/TestIcebergCatalogOperations.java | 53 +
.../lakehouse/iceberg/TestIcebergTable.java | 19 +
.../TestIcebergTablePropertiesMetadata.java | 87 ++
.../iceberg/converter/TestConvertUtil.java | 151 +++
.../integration/test/CatalogIcebergBaseIT.java | 539 +++++++++-
.../integration/test/CatalogIcebergRestIT.java | 130 +++
.../integration/test/IcebergClassLoaderPoolIT.java | 265 +++++
.../integration/test/TestMultipleJDBCLoad.java | 12 +-
catalogs/catalog-lakehouse-paimon/build.gradle.kts | 3 +
.../lakehouse/paimon/PaimonCatalogOperations.java | 4 +-
.../authentication/kerberos/KerberosClient.java | 124 ---
.../lakehouse/paimon/ops/PaimonCatalogOps.java | 2 +-
.../lakehouse/paimon/utils/CatalogUtils.java | 29 +-
.../build.gradle.kts | 18 +-
.../catalog/hadoop/auth/KerberosAuthUtils.java | 249 +++++
.../catalog/hadoop/auth/KerberosClient.java | 187 ++++
.../catalog/hadoop/auth/TestKerberosAuthUtils.java | 219 ++++
.../catalog/hadoop/auth/TestKerberosClient.java | 91 ++
catalogs/hadoop-common/build.gradle.kts | 3 +
.../gravitino/catalog/hadoop/fs/Constants.java | 6 +
.../catalog/hadoop/fs/HDFSFileSystemProxy.java | 23 +-
.../catalog/hadoop/fs/kerberos/KerberosClient.java | 146 ---
catalogs/hive-metastore-common/build.gradle.kts | 3 +
.../apache/gravitino/hive/CachedClientPool.java | 10 +-
.../gravitino/hive/client/HiveClientFactory.java | 6 +-
...{KerberosClient.java => HmsKerberosClient.java} | 88 +-
.../org/apache/gravitino/cli/TypeConverter.java | 2 +
.../apache/gravitino/cli/commands/ListGroups.java | 5 +
.../apache/gravitino/cli/commands/ListUsers.java | 10 +
.../org/apache/gravitino/cli/TestParseType.java | 6 +
.../apache/gravitino/cli/TestTypeConverter.java | 1 +
.../org/apache/gravitino/client/DTOConverters.java | 3 +-
.../org/apache/gravitino/client/ErrorHandlers.java | 3 +
.../client/FunctionCatalogOperations.java | 10 +-
.../apache/gravitino/client/GenericFunction.java | 131 +++
.../org/apache/gravitino/client/GenericView.java | 141 +++
.../apache/gravitino/client/GravitinoClient.java | 32 +
.../apache/gravitino/client/GravitinoMetalake.java | 58 ++
.../gravitino/client/KerberosTokenProvider.java | 4 +-
.../apache/gravitino/client/RelationalCatalog.java | 6 +-
.../gravitino/client/TestFunctionCatalog.java | 46 +
.../apache/gravitino/client/TestSupportTags.java | 107 ++
.../org/apache/gravitino/client/TestUserGroup.java | 46 +
.../gravitino/client/integration/test/TagIT.java | 227 ++++
.../test/authorization/AccessControlIT.java | 45 +
clients/client-python/build.gradle.kts | 19 +-
clients/client-python/gravitino/api/catalog.py | 10 +
.../gravitino/api/function/function.py | 13 +
.../client-python/gravitino/api/rel/dialects.py | 13 +-
.../gravitino/api/rel/representation.py | 18 +-
.../gravitino/api/rel/sql_representation.py | 47 +
.../rel/types/json_serdes/_helper/serdes_utils.py | 24 +-
.../client-python/gravitino/api/rel/types/type.py | 12 +
.../client-python/gravitino/api/rel/types/types.py | 151 +++
clients/client-python/gravitino/api/rel/view.py | 81 ++
.../gravitino/api/rel/view_catalog.py | 149 +++
.../client-python/gravitino/api/rel/view_change.py | 214 ++++
.../client/function_catalog_operations.py | 17 +-
.../gravitino/client/generic_function.py | 56 +-
.../client-python/gravitino/client/generic_view.py | 107 ++
.../client/metadata_object_tag_operations.py | 5 +-
.../gravitino/client/relational_catalog.py | 224 +++-
.../dto/rel/json_serdes/representation_serdes.py | 49 +
.../gravitino/dto/rel/representation_dto.py | 22 +-
.../gravitino/dto/rel/sql_representation_dto.py | 58 ++
.../client-python/gravitino/dto/rel/view_dto.py | 105 ++
.../gravitino/dto/requests/view_create_request.py | 96 ++
.../gravitino/dto/requests/view_update_request.py | 166 +++
.../gravitino/dto/requests/view_updates_request.py | 43 +-
.../gravitino/dto/responses/view_response.py | 49 +
.../gravitino/dto/util/dto_converters.py | 54 +-
clients/client-python/gravitino/exceptions/base.py | 8 +
.../exceptions/handlers/view_error_handler.py | 78 ++
clients/client-python/gravitino/utils/serdes.py | 11 +
clients/client-python/requirements-dev.txt | 4 +-
clients/client-python/requirements.txt | 2 +-
clients/client-python/setup.py | 2 +-
.../tests/integration/integration_test_env.py | 142 ++-
.../tests/integration/test_catalog.py | 37 +-
.../tests/integration/test_group_management.py | 62 +-
.../client-python/tests/integration/test_owner.py | 53 +-
.../tests/integration/test_relational_catalog.py | 171 +++
.../tests/integration/test_role_management.py | 62 +-
.../client-python/tests/integration/test_schema.py | 32 +-
.../tests/integration/test_supports_tags.py | 107 ++
.../client-python/tests/integration/test_user.py | 64 +-
.../{gravitino => tests/unittests}/api/__init__.py | 0
.../unittests/api/function}/__init__.py | 0
.../tests/unittests/api/function/test_function.py | 28 +-
.../unittests/api/rel/test_sql_representation.py | 54 +
.../tests/unittests/api/rel/test_types.py | 32 +
.../tests/unittests/api/rel/test_view.py | 76 ++
.../tests/unittests/api/rel/test_view_change.py | 150 +++
.../api/stats/test_supports_statistics.py | 9 +-
.../api => tests/unittests/api/tag}/__init__.py | 0
.../unittests/client/operation_test_fixtures.py | 89 ++
.../client/test_metalake_group_operations.py | 73 +-
.../client/test_metalake_role_operations.py | 167 +--
.../client/test_metalake_user_operations.py | 73 +-
.../dto/rel/test_representation_serdes.py | 54 +
.../dto/rel/test_sql_representation_dto.py | 55 +
.../tests/unittests/dto/rel/test_table_dto.py | 129 +--
.../tests/unittests/dto/rel/test_view_dto.py | 293 ++++++
.../dto/requests/test_view_create_request.py | 144 +++
.../dto/requests/test_view_update_request.py | 197 ++++
.../unittests/dto/responses/test_responses.py | 163 +--
.../unittests/dto/responses/test_view_response.py | 51 +
.../unittests/dto/util/test_dto_converters.py | 181 +---
.../api => tests/unittests/fixtures}/__init__.py | 0
.../tests/unittests/fixtures/table_fixtures.py | 222 ++++
.../unittests/json_serdes/test_type_serdes.py | 9 +
.../tests/unittests/test_error_handler.py | 83 ++
.../tests/unittests/test_generic_function.py | 79 ++
.../tests/unittests/test_generic_view.py | 85 ++
.../tests/unittests/test_relational_catalog.py | 380 ++++---
.../tests/unittests/test_relational_table.py | 158 +--
.../client-python/tests/unittests/test_requests.py | 133 +--
clients/filesystem-fuse/Cargo.toml | 2 +-
.../filesystem-hadoop3-runtime/build.gradle.kts | 1 +
clients/filesystem-hadoop3/build.gradle.kts | 2 +
.../filesystem/hadoop/BaseGVFSOperations.java | 20 +-
.../hadoop/GravitinoVirtualFileSystem.java | 6 +
.../gravitino/filesystem/hadoop/TestGvfsBase.java | 11 +
.../test/GravitinoVirtualFileSystemCOSIT.java | 169 +++
common/build.gradle.kts | 4 +
.../org/apache/gravitino/auth/ActiveRoles.java | 164 +++
.../apache/gravitino/auth/ActiveRolesParser.java | 122 +++
.../org/apache/gravitino/auth/AuthConstants.java | 10 +
.../auth/IllegalActiveRolesException.java | 33 +-
.../org/apache/gravitino/auth/KerberosUtils.java | 6 +-
.../apache/gravitino/config/ConfigConstants.java | 5 +-
.../gravitino/dto/authorization/GroupDTO.java | 30 +-
.../gravitino/dto/authorization/UserDTO.java | 55 +-
.../dto/encryption/kms/KmsReferenceDTO.java | 68 ++
.../gravitino/dto/requests/GroupAddRequest.java | 22 +-
.../gravitino/dto/requests/TableUpdateRequest.java | 20 +-
.../gravitino/dto/requests/UserAddRequest.java | 28 +-
.../apache/gravitino/dto/util/DTOConverters.java | 3 +
.../encryption/kms/KmsAuthenticationException.java | 50 +
.../apache/gravitino/encryption/kms/KmsClient.java | 56 +
.../gravitino/encryption/kms/KmsClientFactory.java | 53 +
.../encryption/kms/KmsConfigurationException.java | 49 +
.../gravitino/encryption/kms/KmsKeyProperties.java | 63 ++
.../java/org/apache/gravitino/json/JsonUtils.java | 21 +
.../org/apache/gravitino/utils/FileFetcher.java | 60 +-
.../org/apache/gravitino/utils/JdbcUrlUtils.java | 83 +-
.../gravitino/utils/RemoteFileDownloader.java | 396 +++++++
.../apache/gravitino/utils/RemoteUriValidator.java | 140 ++-
.../java/org/apache/gravitino/utils/SafeUri.java | 55 +
.../org/apache/gravitino/auth/TestActiveRoles.java | 102 ++
.../gravitino/auth/TestActiveRolesParser.java | 122 +++
.../dto/encryption/kms/TestKmsReferenceDTO.java | 91 ++
.../encryption/kms/TestFakeKmsClient.java | 104 ++
.../gravitino/encryption/kms/TestKmsClient.java | 95 ++
.../org/apache/gravitino/json/TestJsonUtils.java | 40 +
.../apache/gravitino/utils/TestFileFetcher.java | 89 +-
.../apache/gravitino/utils/TestJdbcUrlUtils.java | 402 ++++++-
.../gravitino/utils/TestRemoteFileDownloader.java | 686 ++++++++++++
.../gravitino/utils/TestRemoteUriValidator.java | 118 ++-
.../org/apache/gravitino/utils/TestSafeUri.java | 51 +
.../gravitino/encryption/kms/FakeKmsClient.java | 140 +++
.../encryption/kms/TestKmsClientContract.java | 95 ++
.../kms/TestKmsClientFactoryContract.java | 27 +-
conf/gravitino-iceberg-rest-server.conf.template | 18 +
conf/gravitino.conf.template | 4 +
.../main/java/org/apache/gravitino/Configs.java | 12 +
.../src/main/java/org/apache/gravitino/Entity.java | 22 +
.../java/org/apache/gravitino/EntityStore.java | 10 +
.../java/org/apache/gravitino/GravitinoEnv.java | 27 +-
.../gravitino/SupportsExternalIdOperations.java | 71 ++
.../java/org/apache/gravitino/UserPrincipal.java | 32 +
.../java/org/apache/gravitino/audit/AuditLog.java | 14 +
.../apache/gravitino/audit/AuditLogManager.java | 9 +-
.../gravitino/audit/v2/CompatibilityUtils.java | 7 +
.../authorization/AccessControlDispatcher.java | 113 ++
.../authorization/AccessControlManager.java | 75 ++
.../authorization/AuthorizationRequestContext.java | 37 +
.../authorization/AuthorizationUtils.java | 84 ++
.../authorization/GravitinoAuthorizer.java | 34 +-
.../gravitino/authorization/OwnerManager.java | 7 +-
.../gravitino/authorization/PermissionManager.java | 6 +
...pManager.java => UserGroupExternalManager.java} | 183 ++--
.../gravitino/authorization/UserGroupManager.java | 6 +-
.../auxiliary/AuxiliaryServiceManager.java | 4 +-
.../gravitino/cache/CaffeineEntityCache.java | 4 +-
.../gravitino/catalog/CapabilityHelpers.java | 54 +-
.../apache/gravitino/catalog/CatalogManager.java | 202 +++-
.../catalog/FilesetNormalizeDispatcher.java | 17 +-
.../catalog/FunctionNormalizeDispatcher.java | 17 +-
.../gravitino/catalog/ManagedTableOperations.java | 8 +-
.../catalog/ModelNormalizeDispatcher.java | 17 +-
.../catalog/PartitionNormalizeDispatcher.java | 22 +-
.../catalog/SchemaNormalizeDispatcher.java | 19 +-
.../catalog/SchemaOperationDispatcher.java | 2 +-
.../catalog/TableNormalizeDispatcher.java | 17 +-
.../catalog/TableOperationDispatcher.java | 2 +-
.../catalog/TopicNormalizeDispatcher.java | 17 +-
.../catalog/TopicOperationDispatcher.java | 2 +-
.../gravitino/catalog/ViewNormalizeDispatcher.java | 16 +-
.../gravitino/catalog/ViewOperationDispatcher.java | 2 +-
.../apache/gravitino/connector/BaseCatalog.java | 9 +
.../gravitino/connector/capability/Capability.java | 20 +
.../gravitino/credential/CredentialCache.java | 5 +-
.../encryption/kms/KmsClientRegistry.java | 197 ++++
.../apache/gravitino/encryption/kms/KmsConfig.java | 161 +++
.../hook/AccessControlHookDispatcher.java | 48 +
.../gravitino/hook/CatalogHookDispatcher.java | 4 +-
.../apache/gravitino/hook/TableHookDispatcher.java | 25 +-
.../job/BuiltInJobTemplateEventListener.java | 7 +-
.../java/org/apache/gravitino/job/JobManager.java | 14 +-
.../listener/AccessControlEventDispatcher.java | 170 +++
.../gravitino/listener/AsyncQueueListener.java | 2 +-
.../listener/api/event/DisableUserEvent.java | 65 ++
.../api/event/DisableUserFailureEvent.java | 57 +
.../DisableUserPreEvent.java} | 42 +-
.../listener/api/event/EnableUserEvent.java | 65 ++
.../listener/api/event/EnableUserFailureEvent.java | 57 +
.../EnableUserPreEvent.java} | 42 +-
.../api/event/GetGroupByExternalIdEvent.java | 54 +
.../GetGroupByExternalIdFailureEvent.java} | 44 +-
.../GetGroupByExternalIdPreEvent.java} | 43 +-
.../api/event/GetUserByExternalIdEvent.java | 65 ++
.../api/event/GetUserByExternalIdFailureEvent.java | 57 +
.../api/event/GetUserByExternalIdPreEvent.java | 55 +
.../listener/api/event/OperationType.java | 7 +
.../api/event/RemoveGroupByExternalIdEvent.java | 52 +
.../RemoveGroupByExternalIdFailureEvent.java} | 44 +-
.../RemoveGroupByExternalIdPreEvent.java} | 43 +-
.../api/event/RemoveUserByExternalIdEvent.java | 68 ++
.../event/RemoveUserByExternalIdFailureEvent.java | 57 +
.../api/event/RemoveUserByExternalIdPreEvent.java | 55 +
.../gravitino/listener/api/info/GroupInfo.java | 12 +
.../gravitino/listener/api/info/UserInfo.java | 23 +
.../org/apache/gravitino/meta/GroupEntity.java | 24 +-
.../java/org/apache/gravitino/meta/UserEntity.java | 46 +-
.../apache/gravitino/metrics/MetricsSystem.java | 2 +-
.../storage/LancePartitionStatisticStorage.java | 4 +
.../gravitino/storage/relational/JDBCBackend.java | 38 +-
.../storage/relational/RelationalBackend.java | 29 +
.../storage/relational/RelationalEntityStore.java | 46 +-
.../relational/RelationalGarbageCollector.java | 29 +-
.../SupportsOrphanedRelationCleanup.java | 30 +-
.../storage/relational/mapper/GroupMetaMapper.java | 6 +
.../mapper/GroupMetaSQLProviderFactory.java | 5 +
.../OrphanedMetadataObjectRelationMapper.java | 81 ++
.../OrphanedMetadataObjectRelationSQLProvider.java | 96 ++
.../storage/relational/mapper/UserMetaMapper.java | 10 +
.../mapper/UserMetaSQLProviderFactory.java | 10 +
.../provider/DefaultMapperPackageProvider.java | 2 +
.../provider/base/GroupMetaBaseSQLProvider.java | 43 +-
.../provider/base/OwnerMetaBaseSQLProvider.java | 4 +
.../base/TagMetadataObjectRelBaseSQLProvider.java | 28 +
.../provider/base/UserMetaBaseSQLProvider.java | 64 +-
.../mapper/provider/h2/GroupMetaH2Provider.java | 2 +
.../mapper/provider/h2/UserMetaH2Provider.java | 1 +
.../postgresql/GroupMetaPostgreSQLProvider.java | 8 +-
.../TagMetadataObjectRelPostgreSQLProvider.java | 28 +
.../postgresql/UserMetaPostgreSQLProvider.java | 9 +-
.../gravitino/storage/relational/po/GroupPO.java | 12 +
.../gravitino/storage/relational/po/UserPO.java | 27 +
.../relational/service/FunctionMetaService.java | 6 +
.../relational/service/GroupMetaService.java | 28 +
.../OrphanedMetadataObjectRelationService.java | 153 +++
.../relational/service/TableMetaService.java | 12 +-
.../relational/service/UserMetaService.java | 67 ++
.../storage/relational/utils/POConverters.java | 12 +
.../java/org/apache/gravitino/tag/TagManager.java | 4 +-
.../org/apache/gravitino/utils/ClassLoaderKey.java | 70 ++
.../apache/gravitino/utils/ClassLoaderPool.java | 216 ++++
.../gravitino/utils/IsolatedClassLoader.java | 43 +-
.../gravitino/utils/PooledClassLoaderEntry.java | 101 ++
.../org/apache/gravitino/utils/PrincipalUtils.java | 6 +-
.../java/org/apache/gravitino/TestCatalog.java | 7 +
.../TestGravitinoEnvKmsClientRegistry.java | 62 ++
.../gravitino/audit/v2/TestCompatibilityUtils.java | 6 +
.../authorization/TestAccessControlManager.java | 147 +++
.../TestAuthorizationRequestContext.java | 17 +
.../authorization/TestAuthorizationUtils.java | 131 +++
.../gravitino/catalog/TestCapabilityHelpers.java | 145 +++
.../gravitino/catalog/TestCatalogManager.java | 74 ++
.../catalog/TestClassLoaderPoolIntegration.java | 349 +++++++
.../catalog/TestManagedTableOperations.java | 42 +
.../catalog/TestPartitionNormalizeDispatcher.java | 72 ++
.../catalog/TestTableNormalizeDispatcher.java | 82 ++
.../gravitino/connector/TestCatalogOperations.java | 10 +-
.../connector/capability/TestCapability.java | 8 +
.../encryption/kms/TestKmsClientRegistry.java | 489 +++++++++
.../gravitino/encryption/kms/TestKmsConfig.java | 145 +++
.../gravitino/hook/TestTableHookDispatcher.java | 428 +++-----
.../job/TestBuiltInJobTemplateEventListener.java | 52 +-
.../org/apache/gravitino/job/TestJobManager.java | 35 +
.../listener/api/event/TestGroupEvent.java | 70 ++
.../listener/api/event/TestOwnerEvent.java | 3 +-
.../listener/api/event/TestUserEvent.java | 87 ++
.../storage/memory/TestMemoryEntityStore.java | 82 +-
.../relational/TestRelationalGarbageCollector.java | 72 ++
.../mapper/provider/base/TestAuthMappers.java | 1 +
.../provider/base/TestUserRoleRelMapper.java | 1 +
.../provider/h2/TestGroupMetaH2Provider.java | 7 +-
.../relational/service/TestCatalogMetaService.java | 157 +++
.../service/TestFunctionMetaService.java | 42 +
.../relational/service/TestGroupMetaService.java | 60 ++
.../TestOrphanedMetadataObjectRelationService.java | 139 +++
.../relational/service/TestSchemaMetaService.java | 146 +++
.../relational/service/TestUserMetaService.java | 147 +++
.../relational/service/TestViewMetaService.java | 41 +
.../org/apache/gravitino/tag/TestTagManager.java | 167 ++-
.../gravitino/utils/TestClassLoaderPool.java | 428 ++++++++
.../gravitino/utils/TestIsolatedClassLoader.java | 12 +
.../gravitino/utils/TestMetadataObjectUtil.java | 11 +
.../gravitino-entity-cache-multinode-design.md | 429 ++++++++
design-docs/gravitino-role-assumption.md | 366 +++++++
design-docs/images/coherence-gate.png | Bin 0 -> 86977 bytes
design-docs/images/entity-key-invalidation.png | Bin 0 -> 125578 bytes
design-docs/images/roadmap.png | Bin 0 -> 76171 bytes
design-docs/images/shared-cache.png | Bin 0 -> 63940 bytes
.../gravitino-iceberg-rest-server/Chart.yaml | 4 +-
.../templates/httproute.yaml | 67 ++
.../templates/ingress.yaml | 2 +-
.../tests/httproute_test.yaml | 205 ++++
.../tests/ingress_test.yaml | 9 +
.../gravitino-iceberg-rest-server/values.yaml | 21 +-
dev/charts/gravitino-lance-rest-server/Chart.yaml | 4 +-
.../templates/httproute.yaml | 67 ++
.../templates/ingress.yaml | 2 +-
.../tests/httproute_test.yaml | 154 +++
.../tests/ingress_test.yaml | 9 +
dev/charts/gravitino-lance-rest-server/values.yaml | 21 +-
dev/charts/gravitino/Chart.yaml | 4 +-
dev/charts/gravitino/templates/httproute.yaml | 67 ++
dev/charts/gravitino/templates/ingress.yaml | 4 +-
dev/charts/gravitino/tests/httproute_test.yaml | 154 +++
dev/charts/gravitino/tests/ingress_test.yaml | 9 +
dev/charts/gravitino/values.yaml | 21 +-
docs/fileset-catalog-with-cos.md | 544 ++++++++++
docs/fileset-catalog.md | 12 +-
docs/gravitino-mcp-server.md | 33 +-
docs/gravitino-server-config.md | 9 +-
docs/how-to-build.md | 1 -
docs/iceberg-rest-engine/trino.md | 314 +++---
docs/iceberg-rest-service.md | 68 +-
docs/index.md | 8 +-
docs/jdbc-clickhouse-catalog.md | 11 +-
docs/jdbc-doris-catalog.md | 205 +++-
docs/lakehouse-iceberg-catalog.md | 67 +-
docs/manage-relational-metadata-using-gravitino.md | 26 +-
docs/manage-tags-in-gravitino.md | 10 +-
docs/open-api/catalogs.yaml | 49 +
docs/open-api/datatype.yaml | 73 +-
docs/open-api/filesets.yaml | 1 -
docs/open-api/groups.yaml | 9 +-
docs/open-api/indexes.yaml | 8 +
docs/open-api/lineage.yaml | 11 +-
docs/open-api/models.yaml | 3 +-
docs/open-api/openapi.yaml | 6 +-
docs/open-api/policies.yaml | 1 +
docs/open-api/statistics.yaml | 6 +-
docs/open-api/tables.yaml | 67 +-
docs/open-api/tags.yaml | 4 +-
docs/open-api/users.yaml | 18 +-
docs/security/access-control.md | 42 +-
docs/security/credential-vending.md | 505 +++++----
...partitioning-distribution-sort-order-indexes.md | 13 +-
.../flink/connector/jdbc/GravitinoJdbcCatalog.java | 12 +-
.../connector/jdbc/JdbcPropertiesConstants.java | 1 +
.../connector/integration/test/FlinkCommonIT.java | 21 +-
.../store/TestGravitinoSessionCatalogStore.java | 10 +
flink-connector/v1.18/flink/build.gradle.kts | 1 +
flink-connector/v1.19/flink/build.gradle.kts | 1 +
flink-connector/v1.20/flink/build.gradle.kts | 1 +
gradle.properties | 2 +-
gradle/libs.versions.toml | 2 +
iceberg/iceberg-common/build.gradle.kts | 3 +
.../iceberg/common/ClosableHiveCatalog.java | 66 +-
.../iceberg/common/ClosableJdbcCatalog.java | 108 ++
.../authentication/kerberos/KerberosClient.java | 136 ---
.../iceberg/common/ops/IcebergCatalogWrapper.java | 80 +-
.../iceberg/common/utils/IcebergCatalogUtil.java | 18 +-
.../common/utils/IcebergHiveCachedClientPool.java | 9 +-
.../iceberg/common/utils/KerberosCatalogUtils.java | 175 ++++
.../iceberg/MetastoreRegisterTableUtils.java | 100 ++
.../HiveCatalogWithMetadataLocationSupport.java | 144 ++-
.../JdbcCatalogWithMetadataLocationSupport.java | 54 +-
.../MemoryCatalogWithMetadataLocationSupport.java | 28 +
.../iceberg/common/TestClosableJdbcCatalog.java | 134 +++
.../common/utils/TestIcebergCatalogUtil.java | 26 +-
.../common/utils/TestKerberosCatalogUtils.java | 64 ++
.../iceberg/TestMetastoreRegisterTableUtils.java | 67 ++
...TestJdbcCatalogWithMetadataLocationSupport.java | 47 +
...stMemoryCatalogWithMetadataLocationSupport.java | 29 +
.../iceberg/service/CatalogWrapperForREST.java | 120 ++-
.../iceberg/service/FederatedCatalogWrapper.java | 132 ++-
.../service/IcebergCatalogWrapperManager.java | 5 +-
.../iceberg/service/IcebergExceptionMapper.java | 1 +
.../iceberg/service/IcebergRESTUtils.java | 44 +
.../IcebergNamespaceEventDispatcher.java | 31 +
.../dispatcher/IcebergNamespaceHookDispatcher.java | 89 ++
.../IcebergNamespaceOperationDispatcher.java | 13 +
.../IcebergNamespaceOperationExecutor.java | 10 +
.../dispatcher/IcebergTableOperationExecutor.java | 6 +-
.../service/rest/IcebergConfigOperations.java | 1 +
.../service/rest/IcebergNamespaceOperations.java | 38 +
.../service/rest/IcebergTableOperations.java | 13 +-
.../api/event/IcebergRegisterViewEvent.java | 59 ++
.../api/event/IcebergRegisterViewFailureEvent.java | 50 +
.../api/event/IcebergRegisterViewPreEvent.java | 47 +
.../integration/test/IcebergRESTHiveCatalogIT.java | 47 +
.../integration/test/IcebergRESTServiceBaseIT.java | 9 +
.../integration/test/IcebergRESTServiceIT.java | 8 +-
.../test/IcebergRestKerberosHiveCatalogIT.java | 125 +--
...KerberosHiveWithUserImpersonationCatalogIT.java | 7 +-
.../test/IcebergRestKerberosJdbcCatalogIT.java | 133 +++
...erberosJdbcWithUserImpersonationCatalogIT.java} | 22 +-
.../test/IcebergRestKerberosTestEnv.java | 253 +++++
.../util/IcebergRESTServerManagerForDeploy.java | 93 +-
.../iceberg/service/TestCatalogWrapperForREST.java | 350 ++++++-
.../service/TestIcebergAuthenticationFilter.java | 20 +
.../TestIcebergNamespaceHookDispatcher.java | 171 +++
.../TestIcebergNamespaceOperationExecutor.java | 15 +
.../service/rest/CatalogWrapperForTest.java | 44 +
.../iceberg/service/rest/IcebergTestBase.java | 9 +
.../service/rest/TestIcebergTableOperations.java | 110 ++
.../service/rest/TestIcebergViewOperations.java | 53 +
integration-test-common/build.gradle.kts | 1 +
.../docker-script/{shutdown.sh => compose-env.sh} | 20 +-
...ompose.yaml => docker-compose-trino-mysql.yaml} | 84 +-
.../docker-script/docker-compose.yaml | 14 +-
.../docker-script/inspect_ip.sh | 21 +-
integration-test-common/docker-script/launch.sh | 65 +-
integration-test-common/docker-script/shutdown.sh | 14 +-
.../doris-docker-script/docker-compose.yaml | 35 +-
.../doris-docker-script/start-be.sh | 13 +-
.../gravitino/integration/test/MiniGravitino.java | 80 +-
.../integration/test/TestMiniGravitino.java | 85 ++
.../integration/test/container/ContainerSuite.java | 28 +-
.../integration/test/container/DorisContainer.java | 40 +-
.../integration/test/container/DorisImageName.java | 49 +
.../test/container/TrinoITContainers.java | 97 +-
.../integration/test/util/TestDatabaseName.java | 14 +
.../lance/common/ops/NamespaceWrapper.java | 4 +
.../gravitino/GravitinoLanceTableOperations.java | 16 +-
lance/lance-rest-server/build.gradle.kts | 1 +
.../apache/gravitino/lance/LanceJettyServer.java | 19 +-
.../apache/gravitino/lance/LanceRESTService.java | 13 +-
.../lance/service/LanceAuthenticationFilter.java | 93 ++
.../lance/service/LanceHealthCheckPathMatcher.java | 41 +
.../lance/service/rest/LanceHealthOperations.java | 142 +++
.../service/TestLanceAuthenticationFilter.java | 108 +-
.../rest/TestGravitinoLanceTableOperations.java | 34 +
.../service/rest/TestLanceHealthOperations.java | 96 ++
.../handler/BaseExpressionStrategyHandler.java | 74 +-
.../recommender/util/ExpressionEvaluator.java | 15 +
.../recommender/util/QLExpressionEvaluator.java | 81 +-
.../util/TableMetadataTriggerExpressionUtils.java | 90 ++
.../compaction/TestCompactionStrategyHandler.java | 264 +++++
.../util/TestQLExpressionEvaluator.java | 65 ++
.../TestTableMetadataTriggerExpressionUtils.java | 118 +++
mcp-server/mcp_server/client/catalog_operation.py | 24 +
mcp-server/mcp_server/client/fileset_operation.py | 31 +
.../mcp_server/client/gravitino_operation.py | 11 +
mcp-server/mcp_server/client/model_operation.py | 78 ++
.../{table_operation.py => partition_operation.py} | 33 +-
.../plain/plain_rest_client_catalog_operation.py | 46 +
.../plain/plain_rest_client_fileset_operation.py | 68 +-
.../plain/plain_rest_client_model_operation.py | 147 ++-
.../client/plain/plain_rest_client_operation.py | 9 +
...py => plain_rest_client_partition_operation.py} | 37 +-
.../plain/plain_rest_client_schema_operation.py | 32 +
.../plain/plain_rest_client_table_operation.py | 63 ++
.../plain/plain_rest_client_tag_operation.py | 9 +-
.../plain/plain_rest_client_topic_operation.py | 53 +-
mcp-server/mcp_server/client/plain/utils.py | 6 +
mcp-server/mcp_server/client/schema_operation.py | 18 +
mcp-server/mcp_server/client/table_operation.py | 33 +
mcp-server/mcp_server/client/tag_operation.py | 4 +-
mcp-server/mcp_server/client/topic_operation.py | 28 +
mcp-server/mcp_server/tools/__init__.py | 2 +
mcp-server/mcp_server/tools/catalog.py | 109 ++
mcp-server/mcp_server/tools/fileset.py | 104 +-
mcp-server/mcp_server/tools/model.py | 243 +++++
mcp-server/mcp_server/tools/partition.py | 119 +++
mcp-server/mcp_server/tools/schema.py | 79 ++
mcp-server/mcp_server/tools/table.py | 124 +++
mcp-server/mcp_server/tools/tag.py | 18 +-
mcp-server/mcp_server/tools/topic.py | 83 ++
mcp-server/pyproject.toml | 6 +-
mcp-server/tests/integration/test_authz_e2e.py | 9 -
mcp-server/tests/unit/client/test_url_encoding.py | 170 ++-
mcp-server/tests/unit/tools/mock_operation.py | 212 ++++
mcp-server/tests/unit/tools/test_catalog.py | 87 ++
mcp-server/tests/unit/tools/test_fileset.py | 84 ++
mcp-server/tests/unit/tools/test_model.py | 162 +++
mcp-server/tests/unit/tools/test_partition.py | 92 ++
mcp-server/tests/unit/tools/test_schema.py | 69 ++
mcp-server/tests/unit/tools/test_table.py | 104 ++
mcp-server/tests/unit/tools/test_tag.py | 52 +-
mcp-server/tests/unit/tools/test_topic.py | 56 +
.../apache/gravitino/idp/IdpUserGroupManager.java | 2 +-
.../provider/base/IdpGroupMetaBaseSQLProvider.java | 2 +-
.../base/IdpUserGroupRelBaseSQLProvider.java | 2 +-
.../provider/base/IdpUserMetaBaseSQLProvider.java | 2 +-
.../base/TestIdpSoftDeleteSQLProvider.java | 59 ++
scripts/h2/schema-2.0.0-h2.sql | 638 ++++++++++++
scripts/h2/upgrade-1.3.0-to-2.0.0-h2.sql | 29 +
scripts/mysql/schema-2.0.0-mysql.sql | 625 +++++++++++
scripts/mysql/upgrade-1.3.0-to-2.0.0-mysql.sql | 31 +
scripts/postgresql/schema-2.0.0-postgresql.sql | 1096 ++++++++++++++++++++
.../upgrade-1.3.0-to-2.0.0-postgresql.sql | 33 +
.../authentication/AuthenticationFilter.java | 24 +-
.../authentication/KerberosAuthenticator.java | 4 +-
.../authorization/GravitinoAuthorizerProvider.java | 2 +-
.../server/authorization/MetadataAuthzHelper.java | 146 ++-
.../AuthorizationExpressionConstants.java | 42 +
.../authorization/jcasbin/JcasbinAuthorizer.java | 322 ++++--
.../jcasbin/JcasbinLoadedRolesCache.java | 22 +-
.../apache/gravitino/server/web/JettyServer.java | 14 +-
.../authentication/TestAuthenticationFilter.java | 80 ++
.../authentication/TestKerberosAuthenticator.java | 4 +-
.../authorization/TestMetadataAuthzHelper.java | 314 ++++++
.../jcasbin/TestJcasbinAuthorizer.java | 551 +++++++++-
.../apache/gravitino/server/web/ConfigServlet.java | 38 +-
.../server/web/rest/ExceptionHandlers.java | 10 +
.../gravitino/server/web/rest/GroupOperations.java | 45 +-
.../gravitino/server/web/rest/OwnerOperations.java | 4 +-
.../server/web/rest/PermissionOperations.java | 4 +-
.../server/web/rest/SchemaOperations.java | 2 +-
.../gravitino/server/web/rest/UserOperations.java | 15 +-
.../gravitino/server/web/TestConfigServlet.java | 39 +
.../server/web/rest/TestGroupOperations.java | 112 ++
.../web/rest/TestMetadataObjectTagOperations.java | 262 ++++-
.../server/web/rest/TestUserOperations.java | 34 +
.../TestGroupAuthorizationExpression.java | 66 ++
settings.gradle.kts | 2 +
.../authorization/AuthorizationTable.java | 193 ++++
...avitinoAuthorizationSparkSessionExtensions.java | 96 ++
.../authorization/RequiredPrivilegesCheck.java | 46 +
.../spark/connector/catalog/BaseCatalog.java | 35 +-
.../spark/connector/jdbc/GravitinoJdbcCatalog.java | 5 +
.../connector/jdbc/JdbcPropertiesConverter.java | 8 +-
.../connector/plugin/GravitinoDriverPlugin.java | 8 +-
.../connector/version/CatalogNameAdaptor.java | 8 +-
.../authorization/TestAuthorizationTable.java | 101 ++
.../authorization/TestRequiredPrivilegesCheck.java | 75 ++
.../TestRequiredPrivilegesSparkResolution.java | 184 ++++
.../catalog/TestBaseCatalogAuthorization.java | 177 ++++
.../jdbc/TestJdbcPropertiesConverter.java | 23 +
.../plugin/TestGravitinoDriverPlugin.java | 27 +
.../GravitinoPostgreSqlCatalogSpark33.java | 2 +-
.../connector/version/TestCatalogNameAdaptor.java | 8 +
.../GravitinoPostgreSqlCatalogSpark34.java | 2 +-
.../connector/version/TestCatalogNameAdaptor.java | 8 +
.../GravitinoPostgreSqlCatalogSpark35.java | 2 +-
.../connector/version/TestCatalogNameAdaptor.java | 8 +
.../connector/integration/test/TrinoQueryIT.java | 5 +-
.../integration/test/TrinoQueryITBase.java | 28 +-
.../integration/test/TrinoQueryTestTool.java | 6 +
.../trino-test-tools/trino_integration_test.sh | 19 +
.../gravitino/trino/connector/GravitinoConfig.java | 32 +-
.../trino/connector/GravitinoConnectorFactory.java | 9 +-
.../connector/GravitinoConnectorPluginManager.java | 14 +-
.../gravitino/trino/connector/GravitinoHandle.java | 4 +-
.../trino/connector/catalog/CatalogRegister.java | 9 +-
.../test/web/ui/CatalogsPageDorisTest.java | 3 +-
.../integration/test/web/ui/CatalogsPageTest.java | 9 +-
web-v2/web/package.json | 2 +-
web-v2/web/src/app/login/components/BasicLogin.js | 103 ++
.../web/src/app/login/components/DefaultLogin.js | 78 +-
web-v2/web/src/app/login/components/SimpleLogin.js | 55 +
web-v2/web/src/app/login/page.js | 48 +-
web-v2/web/src/app/metalakes/page.js | 3 +-
web-v2/web/src/app/rootLayout/UserSetting.js | 3 +-
web-v2/web/src/components/StyledToast.js | 6 +-
web-v2/web/src/lib/api/auth/index.js | 14 +
web-v2/web/src/lib/provider/session.js | 8 +
web-v2/web/src/lib/store/auth/index.js | 71 +-
web-v2/web/src/lib/utils/axios/index.js | 30 +-
.../web/src/lib/utils/serviceAdmins.js | 20 +-
.../test/web/ui/CatalogsPageDorisTest.java | 3 +-
.../integration/test/web/ui/CatalogsPageTest.java | 9 +-
689 files changed, 43527 insertions(+), 4921 deletions(-)
copy mcp-server/mcp_server/client/catalog_operation.py =>
.github/workflows/asf-allowlist-check.yml (57%)
create mode 100644 .github/workflows/contrib-catalog-test.yml
create mode 100644
api/src/main/java/org/apache/gravitino/credential/COSSecretKeyCredential.java
create mode 100644
api/src/main/java/org/apache/gravitino/encryption/kms/KmsApiIdentifiers.java
create mode 100644
api/src/main/java/org/apache/gravitino/encryption/kms/KmsReference.java
create mode 100644
api/src/test/java/org/apache/gravitino/encryption/kms/TestKmsApiIdentifiers.java
create mode 100644
api/src/test/java/org/apache/gravitino/encryption/kms/TestKmsReference.java
create mode 100644 bundles/tencent-bundle/build.gradle.kts
copy {catalogs/hadoop-common => bundles/tencent}/build.gradle.kts (61%)
create mode 100644
bundles/tencent/src/main/java/org/apache/gravitino/cos/credential/COSSecretKeyProvider.java
create mode 100644
bundles/tencent/src/main/java/org/apache/gravitino/cos/fs/COSCredentialsProvider.java
create mode 100644
bundles/tencent/src/main/java/org/apache/gravitino/cos/fs/COSFileSystemProvider.java
create mode 100644
bundles/tencent/src/main/java/org/apache/gravitino/cos/fs/COSUtils.java
copy integration-test-common/docker-script/inspect_ip.sh =>
bundles/tencent/src/main/resources/META-INF/services/org.apache.gravitino.catalog.hadoop.fs.FileSystemProvider
(82%)
mode change 100755 => 100644
copy integration-test-common/docker-script/inspect_ip.sh =>
bundles/tencent/src/main/resources/META-INF/services/org.apache.gravitino.credential.CredentialProvider
(82%)
mode change 100755 => 100644
create mode 100644
bundles/tencent/src/test/java/org/apache/gravitino/cos/credential/TestCOSCredentialProvider.java
create mode 100644
bundles/tencent/src/test/java/org/apache/gravitino/cos/fs/TestCOSCredentialsProvider.java
create mode 100644
bundles/tencent/src/test/java/org/apache/gravitino/cos/fs/TestCOSFileSystemProvider.java
create mode 100644
catalogs-contrib/catalog-jdbc-clickhouse/src/test/java/org/apache/gravitino/catalog/clickhouse/operations/TestClickHouseTableOperationsUnit.java
create mode 100644
catalogs/catalog-common/src/main/java/org/apache/gravitino/credential/config/COSCredentialConfig.java
copy
catalogs-contrib/catalog-jdbc-clickhouse/src/main/java/org/apache/gravitino/catalog/clickhouse/converter/TypeUtils.java
=>
catalogs/catalog-common/src/main/java/org/apache/gravitino/storage/COSProperties.java
(52%)
create mode 100644
catalogs/catalog-fileset/src/test/java/org/apache/gravitino/catalog/fileset/integration/test/FilesetCOSCatalogIT.java
create mode 100644
catalogs/catalog-jdbc-common/src/test/java/org/apache/gravitino/catalog/jdbc/utils/TestJdbcConnectorUtils.java
create mode 100644
catalogs/catalog-jdbc-doris/src/test/java/org/apache/gravitino/catalog/doris/integration/test/CatalogDoris3xIT.java
create mode 100644
catalogs/catalog-jdbc-doris/src/test/java/org/apache/gravitino/catalog/doris/integration/test/CatalogDoris4xIT.java
copy
spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/plugin/TestGravitinoDriverPlugin.java
=>
catalogs/catalog-jdbc-doris/src/test/java/org/apache/gravitino/catalog/doris/operation/TestDorisDatabaseOperationsSqlGeneration.java
(60%)
copy
spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/plugin/TestGravitinoDriverPlugin.java
=>
catalogs/catalog-jdbc-postgresql/src/test/java/org/apache/gravitino/catalog/postgresql/operation/TestPostgreSqlSchemaOperationsSqlGeneration.java
(57%)
create mode 100644
catalogs/catalog-lakehouse-generic/src/test/java/org/apache/gravitino/catalog/lakehouse/lance/TestLanceConcurrentRepairStress.java
create mode 100644
catalogs/catalog-lakehouse-iceberg/src/test/java/org/apache/gravitino/catalog/lakehouse/iceberg/TestIcebergTablePropertiesMetadata.java
create mode 100644
catalogs/catalog-lakehouse-iceberg/src/test/java/org/apache/gravitino/catalog/lakehouse/iceberg/integration/test/IcebergClassLoaderPoolIT.java
delete mode 100644
catalogs/catalog-lakehouse-paimon/src/main/java/org/apache/gravitino/catalog/lakehouse/paimon/authentication/kerberos/KerberosClient.java
copy catalogs/{hadoop-common => hadoop-auth}/build.gradle.kts (77%)
create mode 100644
catalogs/hadoop-auth/src/main/java/org/apache/gravitino/catalog/hadoop/auth/KerberosAuthUtils.java
create mode 100644
catalogs/hadoop-auth/src/main/java/org/apache/gravitino/catalog/hadoop/auth/KerberosClient.java
create mode 100644
catalogs/hadoop-auth/src/test/java/org/apache/gravitino/catalog/hadoop/auth/TestKerberosAuthUtils.java
create mode 100644
catalogs/hadoop-auth/src/test/java/org/apache/gravitino/catalog/hadoop/auth/TestKerberosClient.java
delete mode 100644
catalogs/hadoop-common/src/main/java/org/apache/gravitino/catalog/hadoop/fs/kerberos/KerberosClient.java
rename
catalogs/hive-metastore-common/src/main/java/org/apache/gravitino/hive/kerberos/{KerberosClient.java
=> HmsKerberosClient.java} (66%)
create mode 100644
clients/client-java/src/main/java/org/apache/gravitino/client/GenericFunction.java
create mode 100644
clients/client-java/src/main/java/org/apache/gravitino/client/GenericView.java
copy integration-test-common/docker-script/inspect_ip.sh =>
clients/client-python/gravitino/api/rel/dialects.py (77%)
mode change 100755 => 100644
copy mcp-server/mcp_server/client/catalog_operation.py =>
clients/client-python/gravitino/api/rel/representation.py (72%)
create mode 100644
clients/client-python/gravitino/api/rel/sql_representation.py
create mode 100644 clients/client-python/gravitino/api/rel/view.py
create mode 100644 clients/client-python/gravitino/api/rel/view_catalog.py
create mode 100644 clients/client-python/gravitino/api/rel/view_change.py
create mode 100644 clients/client-python/gravitino/client/generic_view.py
create mode 100644
clients/client-python/gravitino/dto/rel/json_serdes/representation_serdes.py
copy mcp-server/mcp_server/client/catalog_operation.py =>
clients/client-python/gravitino/dto/rel/representation_dto.py (69%)
create mode 100644
clients/client-python/gravitino/dto/rel/sql_representation_dto.py
create mode 100644 clients/client-python/gravitino/dto/rel/view_dto.py
create mode 100644
clients/client-python/gravitino/dto/requests/view_create_request.py
create mode 100644
clients/client-python/gravitino/dto/requests/view_update_request.py
copy docs/open-api/indexes.yaml =>
clients/client-python/gravitino/dto/requests/view_updates_request.py (50%)
create mode 100644
clients/client-python/gravitino/dto/responses/view_response.py
create mode 100644
clients/client-python/gravitino/exceptions/handlers/view_error_handler.py
copy clients/client-python/{gravitino => tests/unittests}/api/__init__.py
(100%)
copy clients/client-python/{gravitino/api =>
tests/unittests/api/function}/__init__.py (100%)
copy mcp-server/mcp_server/client/schema_operation.py =>
clients/client-python/tests/unittests/api/function/test_function.py (59%)
create mode 100644
clients/client-python/tests/unittests/api/rel/test_sql_representation.py
create mode 100644 clients/client-python/tests/unittests/api/rel/test_view.py
create mode 100644
clients/client-python/tests/unittests/api/rel/test_view_change.py
copy clients/client-python/{gravitino/api =>
tests/unittests/api/tag}/__init__.py (100%)
create mode 100644
clients/client-python/tests/unittests/client/operation_test_fixtures.py
create mode 100644
clients/client-python/tests/unittests/dto/rel/test_representation_serdes.py
create mode 100644
clients/client-python/tests/unittests/dto/rel/test_sql_representation_dto.py
create mode 100644
clients/client-python/tests/unittests/dto/rel/test_view_dto.py
create mode 100644
clients/client-python/tests/unittests/dto/requests/test_view_create_request.py
create mode 100644
clients/client-python/tests/unittests/dto/requests/test_view_update_request.py
create mode 100644
clients/client-python/tests/unittests/dto/responses/test_view_response.py
copy clients/client-python/{gravitino/api =>
tests/unittests/fixtures}/__init__.py (100%)
create mode 100644
clients/client-python/tests/unittests/fixtures/table_fixtures.py
create mode 100644
clients/client-python/tests/unittests/test_generic_function.py
create mode 100644 clients/client-python/tests/unittests/test_generic_view.py
create mode 100644
clients/filesystem-hadoop3/src/test/java/org/apache/gravitino/filesystem/hadoop/integration/test/GravitinoVirtualFileSystemCOSIT.java
create mode 100644
common/src/main/java/org/apache/gravitino/auth/ActiveRoles.java
create mode 100644
common/src/main/java/org/apache/gravitino/auth/ActiveRolesParser.java
copy api/src/main/java/org/apache/gravitino/authorization/Group.java =>
common/src/main/java/org/apache/gravitino/auth/IllegalActiveRolesException.java
(51%)
create mode 100644
common/src/main/java/org/apache/gravitino/dto/encryption/kms/KmsReferenceDTO.java
create mode 100644
common/src/main/java/org/apache/gravitino/encryption/kms/KmsAuthenticationException.java
create mode 100644
common/src/main/java/org/apache/gravitino/encryption/kms/KmsClient.java
create mode 100644
common/src/main/java/org/apache/gravitino/encryption/kms/KmsClientFactory.java
create mode 100644
common/src/main/java/org/apache/gravitino/encryption/kms/KmsConfigurationException.java
create mode 100644
common/src/main/java/org/apache/gravitino/encryption/kms/KmsKeyProperties.java
create mode 100644
common/src/main/java/org/apache/gravitino/utils/RemoteFileDownloader.java
create mode 100644 common/src/main/java/org/apache/gravitino/utils/SafeUri.java
create mode 100644
common/src/test/java/org/apache/gravitino/auth/TestActiveRoles.java
create mode 100644
common/src/test/java/org/apache/gravitino/auth/TestActiveRolesParser.java
create mode 100644
common/src/test/java/org/apache/gravitino/dto/encryption/kms/TestKmsReferenceDTO.java
create mode 100644
common/src/test/java/org/apache/gravitino/encryption/kms/TestFakeKmsClient.java
create mode 100644
common/src/test/java/org/apache/gravitino/encryption/kms/TestKmsClient.java
create mode 100644
common/src/test/java/org/apache/gravitino/utils/TestRemoteFileDownloader.java
create mode 100644
common/src/test/java/org/apache/gravitino/utils/TestSafeUri.java
create mode 100644
common/src/testFixtures/java/org/apache/gravitino/encryption/kms/FakeKmsClient.java
create mode 100644
common/src/testFixtures/java/org/apache/gravitino/encryption/kms/TestKmsClientContract.java
copy
spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/plugin/TestGravitinoDriverPlugin.java
=>
common/src/testFixtures/java/org/apache/gravitino/encryption/kms/TestKmsClientFactoryContract.java
(63%)
create mode 100644
core/src/main/java/org/apache/gravitino/SupportsExternalIdOperations.java
copy
core/src/main/java/org/apache/gravitino/authorization/{UserGroupManager.java =>
UserGroupExternalManager.java} (50%)
create mode 100644
core/src/main/java/org/apache/gravitino/encryption/kms/KmsClientRegistry.java
create mode 100644
core/src/main/java/org/apache/gravitino/encryption/kms/KmsConfig.java
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/DisableUserEvent.java
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/DisableUserFailureEvent.java
copy core/src/main/java/org/apache/gravitino/listener/api/{info/UserInfo.java
=> event/DisableUserPreEvent.java} (50%)
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/EnableUserEvent.java
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/EnableUserFailureEvent.java
copy core/src/main/java/org/apache/gravitino/listener/api/{info/UserInfo.java
=> event/EnableUserPreEvent.java} (50%)
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/GetGroupByExternalIdEvent.java
copy core/src/main/java/org/apache/gravitino/listener/api/{info/UserInfo.java
=> event/GetGroupByExternalIdFailureEvent.java} (53%)
copy core/src/main/java/org/apache/gravitino/listener/api/{info/UserInfo.java
=> event/GetGroupByExternalIdPreEvent.java} (53%)
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/GetUserByExternalIdEvent.java
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/GetUserByExternalIdFailureEvent.java
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/GetUserByExternalIdPreEvent.java
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/RemoveGroupByExternalIdEvent.java
copy core/src/main/java/org/apache/gravitino/listener/api/{info/UserInfo.java
=> event/RemoveGroupByExternalIdFailureEvent.java} (53%)
copy core/src/main/java/org/apache/gravitino/listener/api/{info/UserInfo.java
=> event/RemoveGroupByExternalIdPreEvent.java} (53%)
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/RemoveUserByExternalIdEvent.java
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/RemoveUserByExternalIdFailureEvent.java
create mode 100644
core/src/main/java/org/apache/gravitino/listener/api/event/RemoveUserByExternalIdPreEvent.java
copy api/src/main/java/org/apache/gravitino/authorization/Group.java =>
core/src/main/java/org/apache/gravitino/storage/relational/SupportsOrphanedRelationCleanup.java
(51%)
create mode 100644
core/src/main/java/org/apache/gravitino/storage/relational/mapper/OrphanedMetadataObjectRelationMapper.java
create mode 100644
core/src/main/java/org/apache/gravitino/storage/relational/mapper/OrphanedMetadataObjectRelationSQLProvider.java
create mode 100644
core/src/main/java/org/apache/gravitino/storage/relational/service/OrphanedMetadataObjectRelationService.java
create mode 100644
core/src/main/java/org/apache/gravitino/utils/ClassLoaderKey.java
create mode 100644
core/src/main/java/org/apache/gravitino/utils/ClassLoaderPool.java
create mode 100644
core/src/main/java/org/apache/gravitino/utils/PooledClassLoaderEntry.java
create mode 100644
core/src/test/java/org/apache/gravitino/TestGravitinoEnvKmsClientRegistry.java
create mode 100644
core/src/test/java/org/apache/gravitino/catalog/TestCapabilityHelpers.java
create mode 100644
core/src/test/java/org/apache/gravitino/catalog/TestClassLoaderPoolIntegration.java
create mode 100644
core/src/test/java/org/apache/gravitino/encryption/kms/TestKmsClientRegistry.java
create mode 100644
core/src/test/java/org/apache/gravitino/encryption/kms/TestKmsConfig.java
create mode 100644
core/src/test/java/org/apache/gravitino/storage/relational/TestRelationalGarbageCollector.java
create mode 100644
core/src/test/java/org/apache/gravitino/storage/relational/service/TestOrphanedMetadataObjectRelationService.java
create mode 100644
core/src/test/java/org/apache/gravitino/utils/TestClassLoaderPool.java
create mode 100644 design-docs/gravitino-entity-cache-multinode-design.md
create mode 100644 design-docs/gravitino-role-assumption.md
create mode 100644 design-docs/images/coherence-gate.png
create mode 100644 design-docs/images/entity-key-invalidation.png
create mode 100644 design-docs/images/roadmap.png
create mode 100644 design-docs/images/shared-cache.png
create mode 100644
dev/charts/gravitino-iceberg-rest-server/templates/httproute.yaml
create mode 100644
dev/charts/gravitino-iceberg-rest-server/tests/httproute_test.yaml
create mode 100644
dev/charts/gravitino-lance-rest-server/templates/httproute.yaml
create mode 100644
dev/charts/gravitino-lance-rest-server/tests/httproute_test.yaml
create mode 100644 dev/charts/gravitino/templates/httproute.yaml
create mode 100644 dev/charts/gravitino/tests/httproute_test.yaml
create mode 100644 docs/fileset-catalog-with-cos.md
mode change 100644 => 100755 docs/security/credential-vending.md
create mode 100644
iceberg/iceberg-common/src/main/java/org/apache/gravitino/iceberg/common/ClosableJdbcCatalog.java
delete mode 100644
iceberg/iceberg-common/src/main/java/org/apache/gravitino/iceberg/common/authentication/kerberos/KerberosClient.java
create mode 100644
iceberg/iceberg-common/src/main/java/org/apache/gravitino/iceberg/common/utils/KerberosCatalogUtils.java
create mode 100644
iceberg/iceberg-common/src/main/java/org/apache/iceberg/MetastoreRegisterTableUtils.java
create mode 100644
iceberg/iceberg-common/src/test/java/org/apache/gravitino/iceberg/common/TestClosableJdbcCatalog.java
create mode 100644
iceberg/iceberg-common/src/test/java/org/apache/gravitino/iceberg/common/utils/TestKerberosCatalogUtils.java
create mode 100644
iceberg/iceberg-common/src/test/java/org/apache/iceberg/TestMetastoreRegisterTableUtils.java
create mode 100644
iceberg/iceberg-rest-server/src/main/java/org/apache/gravitino/listener/api/event/IcebergRegisterViewEvent.java
create mode 100644
iceberg/iceberg-rest-server/src/main/java/org/apache/gravitino/listener/api/event/IcebergRegisterViewFailureEvent.java
create mode 100644
iceberg/iceberg-rest-server/src/main/java/org/apache/gravitino/listener/api/event/IcebergRegisterViewPreEvent.java
create mode 100644
iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/IcebergRestKerberosJdbcCatalogIT.java
copy
iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/{IcebergRestKerberosHiveWithUserImpersonationCatalogIT.java
=> IcebergRestKerberosJdbcWithUserImpersonationCatalogIT.java} (87%)
create mode 100644
iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/integration/test/IcebergRestKerberosTestEnv.java
copy integration-test-common/docker-script/{shutdown.sh => compose-env.sh}
(69%)
mode change 100755 => 100644
copy integration-test-common/docker-script/{docker-compose.yaml =>
docker-compose-trino-mysql.yaml} (51%)
create mode 100644
integration-test-common/src/test/java/org/apache/gravitino/integration/test/TestMiniGravitino.java
create mode 100644
integration-test-common/src/test/java/org/apache/gravitino/integration/test/container/DorisImageName.java
copy
spark-connector/v3.4/spark/src/main/java/org/apache/gravitino/spark/connector/jdbc/postgresql/GravitinoPostgreSqlCatalogSpark34.java
=>
lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/LanceJettyServer.java
(63%)
create mode 100644
lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/LanceAuthenticationFilter.java
create mode 100644
lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/LanceHealthCheckPathMatcher.java
create mode 100644
lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceHealthOperations.java
copy
iceberg/iceberg-rest-server/src/test/java/org/apache/gravitino/iceberg/service/TestIcebergAuthenticationFilter.java
=>
lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/service/TestLanceAuthenticationFilter.java
(57%)
create mode 100644
lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/service/rest/TestLanceHealthOperations.java
create mode 100644
maintenance/optimizer/src/main/java/org/apache/gravitino/maintenance/optimizer/recommender/util/TableMetadataTriggerExpressionUtils.java
create mode 100644
maintenance/optimizer/src/test/java/org/apache/gravitino/maintenance/optimizer/recommender/util/TestTableMetadataTriggerExpressionUtils.java
copy mcp-server/mcp_server/client/{table_operation.py =>
partition_operation.py} (58%)
copy mcp-server/mcp_server/client/plain/{plain_rest_client_table_operation.py
=> plain_rest_client_partition_operation.py} (60%)
create mode 100644 mcp-server/mcp_server/tools/partition.py
create mode 100644 mcp-server/tests/unit/tools/test_partition.py
create mode 100644
plugins/idp-basic/src/test/java/org/apache/gravitino/idp/storage/mapper/provider/base/TestIdpSoftDeleteSQLProvider.java
create mode 100644 scripts/h2/schema-2.0.0-h2.sql
create mode 100644 scripts/h2/upgrade-1.3.0-to-2.0.0-h2.sql
create mode 100644 scripts/mysql/schema-2.0.0-mysql.sql
create mode 100644 scripts/mysql/upgrade-1.3.0-to-2.0.0-mysql.sql
create mode 100644 scripts/postgresql/schema-2.0.0-postgresql.sql
create mode 100644 scripts/postgresql/upgrade-1.3.0-to-2.0.0-postgresql.sql
create mode 100644
server/src/test/java/org/apache/gravitino/server/web/rest/authorization/TestGroupAuthorizationExpression.java
create mode 100644
spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/authorization/AuthorizationTable.java
create mode 100644
spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/authorization/GravitinoAuthorizationSparkSessionExtensions.java
create mode 100644
spark-connector/spark-common/src/main/java/org/apache/gravitino/spark/connector/authorization/RequiredPrivilegesCheck.java
create mode 100644
spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/authorization/TestAuthorizationTable.java
create mode 100644
spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/authorization/TestRequiredPrivilegesCheck.java
create mode 100644
spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/authorization/TestRequiredPrivilegesSparkResolution.java
create mode 100644
spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/catalog/TestBaseCatalogAuthorization.java
create mode 100644 web-v2/web/src/app/login/components/BasicLogin.js
create mode 100644 web-v2/web/src/app/login/components/SimpleLogin.js
copy
spark-connector/spark-common/src/test/java/org/apache/gravitino/spark/connector/plugin/TestGravitinoDriverPlugin.java
=> web-v2/web/src/lib/utils/serviceAdmins.js (65%)