This is an automated email from the ASF dual-hosted git repository.
fanng pushed a change to branch mcp_docker
in repository https://gitbox.apache.org/repos/asf/gravitino.git
discard f2550e129e update
discard 6068d152b5 mcp server
discard eee51afde1 mcp server
discard 0b2cb79e81 iceberg doc
add f423a4bd56 [#7880] feat(policy): java client supports policy
operations (part-2) (#8119)
add c126e4061b [#8035] fix: correct CREATE TABLE SQL generation in
SqliteTableOperations (#8105)
add 1c7b2de40c [#8085] fix: NPE in CatalogCreateRequest constructor when
type is null (#8121)
add d1c1ff14b6 [#7974] fix: trim trailing spaces in
StringIdentifier.removeIdFromComment (#8130)
add bcbfdc6453 [#8109] improvement(core): correct PostgreSQL ON CONFLICT
syntax using EXCLUDED instead of VALUES (#8125)
add 31cb0940aa [#7224] improvement(cli): Add ability to create a Fileset
with multiple locations in the Gravitino CLI (#7768)
add facf46b415 [#5534] fix(flink):fix import error (#8134)
add 994ad48af3 [#7149] feat(doc): add open api doc for policy APIs (#8135)
add 8aff98d980 [#8110] Improvement: Equality check in equals method in
FileSetCatalogOperations.java (#8132)
add 3dea8edba4 [#5891] fix(fileset-catalog): Fix bugs that caused by set
user principal in fileset catalog. (#8123)
add 878a07dba5 Revert "[#8061] improvement(mcp-server): Add a CI pipeline
to build module `mcp` specifically." (#8145)
add 8ccb13e534 [#7961] feat(doc): Add the doc for job system (#8066)
add a7af6033a6 [#7947] fix(web): Prevent OAuth headers from being sent to
GitHub API causing 401 errors (#8106)
add aee3290eb0 [#7271] feat(server): Add table statistics REST API (#7829)
add 380b559f89 [#8148] fix(docs): Fix doc error about artifact
filesystem-hadoop3-runtime (#8149)
add 253942db07 [#4377] fix(common): Deprecate the DeleteResponse and use
DropResponse instead (#8146)
add 346ab71565 [#5199] feat(client-python): add single field partitioning
DTOs (#8129)
add fd221a3383 feat(credentials): implement IRSA credential support for
EKS deployments (#7489)
add 873757f1eb [#8087] improvement(Oauth2): OAuth2 token provider to
automatically fetch a new token (#8116)
add 01000c3468 [#7933] feat(doc): add user doc for policy usage (#8136)
add f461cc7421 [#6756] fix (trino-connector): Fix the exception when the
Trino connector loads an unsupported catalog type. (#8058)
add 98482575a3 [#8167]improve(core): Improve the SPI to load in the
specific mapper class (#8170)
add 77561126d5 [#7350] fix(web): fix model version aliases issue (#8169)
add 24d00a87f6 [#7168] fix(script): Fix index name uniqueness in schema
for PG. (#8147)
add 29d42004d9 [#7266] improvement(fileset): polish error message for
fileset default location (#8180)
add 155a634b5e [#2993] improvement(web): display default value for table
columns (#8179)
add eb0b464ce3 [#7290] improvement(web): immutable location- property for
fileset catalog (#8175)
add 8c979e9b06 [#8122] fix(core): Fix unable to handle Java error in doAs
(#8184)
add b37a236637 [#8083] fix: null-safe handling of 'managed' property in
CreateFileset.java (#8144)
add bfe7bbfefe [8158] improvement: display an error if both alias and
version are null in UpdateModelVersionAliases (#8192)
add e7849f284d [#7825] feat(core, server): Add partition statistic manager
and partition REST API (#7876)
add 66583b6ce1 [#7436] feat(model): Implement REST APIs for model version
with multiple URIs (#8173)
add 106ba422be [#5199] feat(client-python): add index and indexes (#8143)
add b434291f00 fix(cli): Fix OAuth/Kerberos authentication detection in
GravitinoConfig (#8187)
add 5178f5c72f [#8159] improvement(cli): Use toType() instead of
toBasicType() for support more complex types (#8227)
add dc4ccd68a2 [#8197]Improvement: update equality check to primitive in
PathBasedMetaDataObject (#8230)
add f48bcf069d [#5660] fix (trino-connector): Fix failed to Load
Postgresql Array data in Trino (#8176)
add c4279cdef1 [#8152] feat(spark): upgrade kyuubi spark connector to 1.10
(#8193)
add 36ff2a9b7a [#7355] fix (doc): Update document for uppercase table and
column names not supported in trino-connector of PostgreSQL catalog (#8171)
add 5ce7d4820d [MINOR] docs: Fix the create model version privilege error
(#8183)
add cb4c690630 [#5199] feat(client-python): add sort order DTO (#8220)
add 8763c22d7e [#5199] feat(client-python): add distribution DTO (#8185)
add 6c8807c1c3 [#7274] feat(client-java): Client supports statistics and
partition statistics (#7828)
add 71ff0e7ff8 [#8137] feat(mcp): support policy read operations for
Gravitino MCP server (#8151)
add d37426426f [#8182] fix(authz): Fix list model version bug (#8223)
add 132c07d93a [#8150] fix(web): support warehouse config for iceberberg
catalog which catalog-backend is rest (#8172)
add fd0828c50a [#8168] Fix NPE in EntityCombinedFileset by initializing
hiddenProperties field (#8238)
add b99ba0030f [#8181] fix(authz): Fix can not list metalake after disable
metalake (#8239)
add 728ea2e702 [#8086] improvement(spark): prevent NPE in
SparkPartitionUtils (#8115)
add bfddf5cbca Fix early return in GroupMetaService.updateGroup ignoring
non-role changes (#8255)
add 755f0caf5e Revert #8255 update group changes (#8265)
add 168137633a [#8138] feat(mcp-server): Support statistic operation for
MCP server. (#8214)
add 508f0335e1 [MINOR] improve(mcp): change the tag of metadata tool to
tag and policy (#8248)
add 7c3b0f8ed9 [#8205] improvement(client-python): Make GVFS configuration
prior to that of catalogs from Gravitino server. (#8236)
add 352a9ffa87 [#8153] feat(iceberg): upgrade iceberg version in document
and docker image bundle jars (#8194)
add 57c07bab13 iceberg doc
add 53aedf1a68 mcp server
add 3639d08b6d mcp server
add 8473461128 update
add 7e884c4298 fix comment
add 83338ba0af fix comment
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (f2550e129e)
\
N -- N -- N refs/heads/mcp_docker (83338ba0af)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.github/workflows/build.yml | 69 +-
.../main/java/org/apache/gravitino/Catalog.java | 9 +
api/src/main/java/org/apache/gravitino/Schema.java | 9 +
.../gravitino/credential/AwsIrsaCredential.java | 129 ++++
.../exceptions/IllegalStatisticNameException.java | 6 +-
.../exceptions/UnmodifiableStatisticException.java | 6 +-
.../java/org/apache/gravitino/file/Fileset.java | 9 +
.../java/org/apache/gravitino/messaging/Topic.java | 9 +
.../java/org/apache/gravitino/model/Model.java | 9 +
.../main/java/org/apache/gravitino/rel/Table.java | 30 +
.../gravitino/stats/PartitionStatistics.java | 2 +-
.../gravitino/stats/PartitionStatisticsDrop.java | 31 +-
.../stats/PartitionStatisticsModification.java | 122 +++
.../gravitino/stats/PartitionStatisticsUpdate.java | 31 +-
.../java/org/apache/gravitino/stats/Statistic.java | 5 +-
.../stats/SupportsPartitionStatistics.java | 6 +-
.../org.apache.gravitino.credential.Credential | 1 +
.../authorization-chain/build.gradle.kts | 2 +-
.../common/PathBasedMetadataObject.java | 2 +-
.../common/TestPathBasedMetadataObject.java | 11 +
.../authorization-ranger/build.gradle.kts | 2 +-
.../s3/credential/AwsIrsaCredentialProvider.java | 409 ++++++++++
.../gravitino/s3/fs/S3CredentialsProvider.java | 8 +
.../gravitino/s3/fs/S3FileSystemProvider.java | 5 +-
.../java/org/apache/gravitino/s3/fs/S3Utils.java | 7 +-
....apache.gravitino.credential.CredentialProvider | 3 +-
.../catalog/fileset/FilesetCatalogOperations.java | 6 +-
.../fileset/SecureFilesetCatalogOperations.java | 30 +-
.../fileset/TestFilesetCatalogOperations.java | 53 +-
.../jdbc/operation/SqliteTableOperations.java | 17 +-
.../jdbc/operation/TestSqliteTableOperations.java | 113 +++
.../gravitino/cli/FilesetCommandHandler.java | 2 +-
.../org/apache/gravitino/cli/GravitinoConfig.java | 13 +-
.../java/org/apache/gravitino/cli/ParseType.java | 6 +-
.../gravitino/cli/commands/CreateFileset.java | 22 +-
.../cli/commands/UpdateModelVersionAliases.java | 4 +-
.../apache/gravitino/cli/TestFilesetCommands.java | 173 +++++
.../apache/gravitino/cli/TestGravitinoConfig.java | 219 ++++++
.../apache/gravitino/cli/TestModelCommands.java | 21 +
.../org/apache/gravitino/cli/TestParseType.java | 22 +
clients/client-java/build.gradle.kts | 1 +
.../apache/gravitino/client/BaseSchemaCatalog.java | 35 +-
.../org/apache/gravitino/client/DTOConverters.java | 12 +-
.../client/DefaultOAuth2TokenProvider.java | 14 +-
.../org/apache/gravitino/client/ErrorHandlers.java | 77 ++
.../apache/gravitino/client/GenericFileset.java | 36 +-
.../org/apache/gravitino/client/GenericModel.java | 35 +-
.../org/apache/gravitino/client/GenericPolicy.java | 20 +-
.../org/apache/gravitino/client/GenericSchema.java | 35 +-
.../org/apache/gravitino/client/GenericTopic.java | 35 +-
.../apache/gravitino/client/GravitinoMetalake.java | 7 +-
...etadataObjectPartitionStatisticsOperations.java | 145 ++++
...ns.java => MetadataObjectPolicyOperations.java} | 76 +-
.../client/MetadataObjectStatisticsOperations.java | 111 +++
.../gravitino/client/ObjectMapperProvider.java | 1 +
.../apache/gravitino/client/RelationalTable.java | 103 ++-
.../apache/gravitino/client/TestDropResponse.java | 83 ++
.../gravitino/client/TestGenericModelCatalog.java | 2 +-
.../gravitino/client/TestGravitinoMetalake.java | 10 +-
.../gravitino/client/TestOAuth2TokenProvider.java | 35 +-
.../java/org/apache/gravitino/client/TestRole.java | 10 +-
...stSupportTags.java => TestSupportPolicies.java} | 326 ++++----
.../client/TestSupportsPartitionStatistics.java | 289 +++++++
.../gravitino/client/TestSupportsStatistics.java | 261 +++++++
.../client/integration/test/PolicyIT.java | 772 +++++++++++++++++++
.../client/integration/test/StatisticIT.java | 389 ++++++++++
.../authorization/MetalakeAuthorizationIT.java | 46 +-
.../test/authorization/ModelAuthorizationIT.java | 40 +-
.../api/{ => expressions/indexes}/__init__.py | 0
.../gravitino/api/expressions/indexes/index.py | 81 ++
.../gravitino/api/expressions/indexes/indexes.py | 66 ++
.../gravitino/dto/rel/distribution_dto.py | 112 +++
.../dto/rel/expressions/field_reference_dto.py | 6 +-
.../dto/rel/partitioning/day_partitioning_dto.py | 25 +-
.../dto/rel/partitioning/hour_partitioning_dto.py | 25 +-
.../rel/partitioning/identity_partitioning_dto.py | 25 +-
.../dto/rel/partitioning/month_partitioning_dto.py | 25 +-
.../dto/rel/partitioning/year_partitioning_dto.py | 25 +-
.../gravitino/dto/rel/sort_order_dto.py | 85 ++
.../gravitino/filesystem/gvfs_storage_handler.py | 49 +-
.../unittests/dto/rel/test_distribution_dto.py | 102 +++
.../unittests/dto/rel/test_field_reference_dto.py | 2 +-
.../tests/unittests/dto/rel/test_function_arg.py | 2 +-
.../dto/rel/test_single_field_partitioning_dto.py | 80 ++
.../tests/unittests/dto/rel/test_sort_order_dto.py | 68 ++
.../tests/unittests/rel/test_indexes.py | 45 ++
.../tests/unittests/test_storage_handler.py | 91 +++
.../credential/CredentialPropertyUtils.java | 44 +-
.../java/org/apache/gravitino/dto/CatalogDTO.java | 5 +
.../gravitino/dto/model/ModelVersionDTO.java | 37 +-
.../dto/requests/CatalogCreateRequest.java | 9 +-
.../dto/requests/ModelVersionLinkRequest.java | 47 +-
.../dto/requests/ModelVersionUpdateRequest.java | 82 ++
...st.java => PartitionStatisticsDropRequest.java} | 26 +-
....java => PartitionStatisticsUpdateRequest.java} | 26 +-
...pAddRequest.java => StatisticsDropRequest.java} | 39 +-
...teRequest.java => StatisticsUpdateRequest.java} | 54 +-
.../gravitino/dto/responses/DeleteResponse.java | 6 +-
.../gravitino/dto/responses/DropResponse.java | 56 +-
.../gravitino/dto/responses/ErrorResponse.java | 4 +-
...nResponse.java => ModelVersionUriResponse.java} | 26 +-
...e.java => PartitionStatisticsListResponse.java} | 35 +-
...icyResponse.java => StatisticListResponse.java} | 32 +-
.../dto/stats/PartitionStatisticsDTO.java | 85 ++
.../dto/stats/PartitionStatisticsDropDTO.java | 89 +++
.../dto/stats/PartitionStatisticsUpdateDTO.java | 91 +++
.../apache/gravitino/dto/stats/StatisticDTO.java | 186 +++++
.../apache/gravitino/dto/util/DTOConverters.java | 28 +-
.../java/org/apache/gravitino/utils/MapUtils.java | 52 +-
.../gravitino/dto/model/TestModelVersionDTO.java | 37 +-
.../dto/requests/TestCatalogCreateRequest.java | 14 +
.../gravitino/dto/requests/TestDropResponse.java | 87 +++
.../gravitino/dto/responses/TestResponses.java | 10 +-
.../dto/stats/TestPartitionStatisticsDTO.java | 57 ++
.../gravitino/dto/stats/TestStatisticDTO.java | 182 +++++
.../org/apache/gravitino/utils/TestMapUtils.java | 46 +-
.../main/java/org/apache/gravitino/Configs.java | 9 +
.../java/org/apache/gravitino/GravitinoEnv.java | 10 +-
.../org/apache/gravitino/StringIdentifier.java | 2 +-
.../gravitino/catalog/EntityCombinedFileset.java | 5 +-
.../apache/gravitino/job/JobExecutorFactory.java | 2 +-
.../apache/gravitino/stats/StatisticManager.java | 168 +++-
.../MemoryPartitionStatsStorageFactory.java | 71 +-
.../stats/storage/PartitionStatisticStorage.java | 17 +-
.../storage/PersistedPartitionStatistics.java | 25 +-
.../stats/storage/PersistedStatistic.java | 82 ++
.../provider/DefaultMapperPackageProvider.java | 61 +-
.../mapper/provider/MapperPackageProvider.java | 14 +-
.../postgresql/StatisticPostgresSQLProvider.java | 2 +-
.../postgresql/UserRoleRelPostgreSQLProvider.java | 12 +-
.../session/SqlSessionFactoryHelper.java | 2 +-
.../apache/gravitino/utils/NameIdentifierUtil.java | 29 +
.../org/apache/gravitino/utils/PrincipalUtils.java | 8 +
.../org/apache/gravitino/TestStringIdentifier.java | 9 +
.../catalog/TestEntityCombinedFileset.java | 78 ++
.../gravitino/stats/TestStatisticManager.java | 108 ++-
.../storage/TestMemoryPartitionStatsStorage.java | 76 +-
.../relational/service/TestTagMetaService.java | 2 +-
dev/docker/gravitino/gravitino-dependency.sh | 22 +-
.../iceberg-rest-server-dependency.sh | 10 +-
dev/docker/mcp-server/mcp-server-dependency.sh | 1 -
dev/docker/mcp-server/start-mcp-server.sh | 2 +-
docs/docker-image-details.md | 16 +
docs/fileset-catalog-with-adls.md | 4 +-
docs/fileset-catalog-with-gcs.md | 4 +-
docs/fileset-catalog-with-oss.md | 4 +-
docs/fileset-catalog-with-s3.md | 4 +-
docs/gravitino-mcp-server.md | 45 +-
docs/how-to-use-gvfs.md | 2 +-
docs/iceberg-rest-service.md | 4 +-
docs/index.md | 4 +
docs/lakehouse-iceberg-catalog.md | 2 +-
docs/manage-jobs-in-gravitino.md | 585 ++++++++++++++
docs/manage-policies-in-gravitino.md | 468 +++++++++++
docs/manage-tags-in-gravitino.md | 8 +-
docs/open-api/jobs.yaml | 726 ++++++++++++++++++
docs/open-api/models.yaml | 187 ++++-
docs/open-api/openapi.yaml | 29 +
docs/open-api/policies.yaml | 852 +++++++++++++++++++++
docs/security/access-control.md | 2 +-
docs/security/credential-vending.md | 29 +-
docs/spark-connector/spark-connector.md | 4 -
docs/trino-connector/catalog-postgresql.md | 10 +
.../flink/connector/catalog/BaseCatalog.java | 2 +-
.../connector/integration/test/FlinkCommonIT.java | 2 +-
gradle/libs.versions.toml | 6 +-
.../iceberg/common/ClosableHiveCatalog.java | 2 +-
iceberg/iceberg-rest-server/build.gradle.kts | 6 +-
mcp-server/mcp_server/client/__init__.py | 1 +
mcp-server/mcp_server/client/fileset_operation.py | 2 +-
.../mcp_server/client/gravitino_operation.py | 22 +
mcp-server/mcp_server/client/job_operation.py | 4 +-
mcp-server/mcp_server/client/model_operation.py | 4 +-
.../plain/plain_rest_client_fileset_operation.py | 2 +-
.../plain/plain_rest_client_job_operation.py | 4 +-
.../plain/plain_rest_client_model_operation.py | 4 +-
.../client/plain/plain_rest_client_operation.py | 82 +-
.../plain/plain_rest_client_policy_operation.py | 82 ++
.../plain/plain_rest_client_statistic_operation.py | 53 ++
.../plain/plain_rest_client_tag_operation.py | 2 +-
.../plain/plain_rest_client_topic_operation.py | 4 +-
mcp-server/mcp_server/client/policy_operation.py | 125 +++
.../mcp_server/client/statistic_operation.py | 72 ++
mcp-server/mcp_server/client/tag_operation.py | 2 +-
mcp-server/mcp_server/client/topic_operation.py | 4 +-
mcp-server/mcp_server/main.py | 5 +-
mcp-server/mcp_server/tools/__init__.py | 4 +
mcp-server/mcp_server/tools/fileset.py | 4 +-
mcp-server/mcp_server/tools/job.py | 10 +-
mcp-server/mcp_server/tools/metadata.py | 2 +-
mcp-server/mcp_server/tools/model.py | 4 +-
mcp-server/mcp_server/tools/policy.py | 393 ++++++++++
mcp-server/mcp_server/tools/statistic.py | 147 ++++
mcp-server/mcp_server/tools/tag.py | 18 +-
mcp-server/mcp_server/tools/topic.py | 4 +-
mcp-server/tests/unit/tools/mock_operation.py | 84 +-
.../unit/tools/{test_table.py => test_fileset.py} | 42 +-
mcp-server/tests/unit/tools/test_job.py | 10 +-
mcp-server/tests/unit/tools/test_model.py | 108 +++
mcp-server/tests/unit/tools/test_policy.py | 140 ++++
mcp-server/tests/unit/tools/test_statistic.py | 72 ++
mcp-server/tests/unit/tools/test_tag.py | 100 +++
.../unit/tools/{test_table.py => test_topic.py} | 26 +-
scripts/postgresql/schema-1.0.0-postgresql.sql | 68 +-
.../upgrade-0.9.0-to-1.0.0-postgresql.sql | 16 +-
.../server/authorization/MetadataFilterHelper.java | 19 +-
.../authorization/jcasbin/JcasbinAuthorizer.java | 7 +-
.../apache/gravitino/server/GravitinoServer.java | 2 +
.../server/web/rest/ExceptionHandlers.java | 74 ++
.../gravitino/server/web/rest/ModelOperations.java | 93 ++-
.../gravitino/server/web/rest/OperationType.java | 3 +-
.../gravitino/server/web/rest/RoleOperations.java | 4 +-
.../server/web/rest/StatisticOperations.java | 459 +++++++++++
.../server/web/rest/TestFilesetOperations.java | 15 +
.../server/web/rest/TestModelOperations.java | 390 +++++++++-
.../server/web/rest/TestRoleOperations.java | 14 +-
.../server/web/rest/TestStatisticOperations.java | 850 ++++++++++++++++++++
settings.gradle.kts | 7 +-
spark-connector/spark-common/build.gradle.kts | 3 +-
.../spark/connector/utils/SparkPartitionUtils.java | 4 +
.../connector/utils/TestSparkPartitionUtils.java | 17 +
.../v3.3/spark-runtime/build.gradle.kts | 2 +-
spark-connector/v3.3/spark/build.gradle.kts | 2 +-
.../v3.4/spark-runtime/build.gradle.kts | 2 +-
spark-connector/v3.4/spark/build.gradle.kts | 2 +-
.../v3.5/spark-runtime/build.gradle.kts | 2 +-
spark-connector/v3.5/spark/build.gradle.kts | 2 +-
.../trino-test-tools/download_jar.sh | 4 +-
.../connector/catalog/CatalogConnectorManager.java | 6 +
.../postgresql/PostgreSQLConnectorAdapter.java | 6 +-
.../connector/metadata/TestGravitinoCatalog.java | 9 +
.../test/web/ui/pages/CatalogsPage.java | 3 +-
.../metalake/rightContent/CreateCatalogDialog.js | 38 +-
.../metalake/rightContent/LinkVersionDialog.js | 6 +-
.../tabsContent/tableView/TableView.js | 29 +
web/web/src/lib/provider/session.js | 5 +-
web/web/src/lib/utils/axios/index.js | 18 +-
web/web/src/lib/utils/initial.js | 3 -
238 files changed, 13625 insertions(+), 1080 deletions(-)
create mode 100644
api/src/main/java/org/apache/gravitino/credential/AwsIrsaCredential.java
create mode 100644
api/src/main/java/org/apache/gravitino/stats/PartitionStatisticsModification.java
create mode 100644
bundles/aws/src/main/java/org/apache/gravitino/s3/credential/AwsIrsaCredentialProvider.java
create mode 100644
catalogs/catalog-jdbc-common/src/test/java/org/apache/gravitino/catalog/jdbc/operation/TestSqliteTableOperations.java
create mode 100644
clients/client-java/src/main/java/org/apache/gravitino/client/MetadataObjectPartitionStatisticsOperations.java
copy
clients/client-java/src/main/java/org/apache/gravitino/client/{MetadataObjectTagOperations.java
=> MetadataObjectPolicyOperations.java} (52%)
create mode 100644
clients/client-java/src/main/java/org/apache/gravitino/client/MetadataObjectStatisticsOperations.java
create mode 100644
clients/client-java/src/test/java/org/apache/gravitino/client/TestDropResponse.java
copy
clients/client-java/src/test/java/org/apache/gravitino/client/{TestSupportTags.java
=> TestSupportPolicies.java} (63%)
create mode 100644
clients/client-java/src/test/java/org/apache/gravitino/client/TestSupportsPartitionStatistics.java
create mode 100644
clients/client-java/src/test/java/org/apache/gravitino/client/TestSupportsStatistics.java
create mode 100644
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/PolicyIT.java
create mode 100644
clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/StatisticIT.java
copy clients/client-python/gravitino/api/{ => expressions/indexes}/__init__.py
(100%)
create mode 100644
clients/client-python/gravitino/api/expressions/indexes/index.py
create mode 100644
clients/client-python/gravitino/api/expressions/indexes/indexes.py
create mode 100644 clients/client-python/gravitino/dto/rel/distribution_dto.py
copy mcp-server/mcp_server/client/schema_operation.py =>
clients/client-python/gravitino/dto/rel/partitioning/day_partitioning_dto.py
(60%)
copy mcp-server/mcp_server/client/schema_operation.py =>
clients/client-python/gravitino/dto/rel/partitioning/hour_partitioning_dto.py
(60%)
copy mcp-server/mcp_server/client/schema_operation.py =>
clients/client-python/gravitino/dto/rel/partitioning/identity_partitioning_dto.py
(60%)
copy mcp-server/mcp_server/client/schema_operation.py =>
clients/client-python/gravitino/dto/rel/partitioning/month_partitioning_dto.py
(60%)
copy mcp-server/mcp_server/client/schema_operation.py =>
clients/client-python/gravitino/dto/rel/partitioning/year_partitioning_dto.py
(60%)
create mode 100644 clients/client-python/gravitino/dto/rel/sort_order_dto.py
create mode 100644
clients/client-python/tests/unittests/dto/rel/test_distribution_dto.py
create mode 100644
clients/client-python/tests/unittests/dto/rel/test_single_field_partitioning_dto.py
create mode 100644
clients/client-python/tests/unittests/dto/rel/test_sort_order_dto.py
create mode 100644 clients/client-python/tests/unittests/rel/test_indexes.py
create mode 100644
clients/client-python/tests/unittests/test_storage_handler.py
copy
common/src/main/java/org/apache/gravitino/dto/requests/{TableUpdatesRequest.java
=> PartitionStatisticsDropRequest.java} (65%)
copy
common/src/main/java/org/apache/gravitino/dto/requests/{ModelUpdatesRequest.java
=> PartitionStatisticsUpdateRequest.java} (61%)
copy
common/src/main/java/org/apache/gravitino/dto/requests/{GroupAddRequest.java =>
StatisticsDropRequest.java} (67%)
copy
common/src/main/java/org/apache/gravitino/dto/requests/{TopicCreateRequest.java
=> StatisticsUpdateRequest.java} (52%)
copy
common/src/main/java/org/apache/gravitino/dto/responses/{FileLocationResponse.java
=> ModelVersionUriResponse.java} (70%)
copy
common/src/main/java/org/apache/gravitino/dto/responses/{SchemaResponse.java =>
PartitionStatisticsListResponse.java} (63%)
copy
common/src/main/java/org/apache/gravitino/dto/responses/{PolicyResponse.java =>
StatisticListResponse.java} (59%)
create mode 100644
common/src/main/java/org/apache/gravitino/dto/stats/PartitionStatisticsDTO.java
create mode 100644
common/src/main/java/org/apache/gravitino/dto/stats/PartitionStatisticsDropDTO.java
create mode 100644
common/src/main/java/org/apache/gravitino/dto/stats/PartitionStatisticsUpdateDTO.java
create mode 100644
common/src/main/java/org/apache/gravitino/dto/stats/StatisticDTO.java
create mode 100644
common/src/test/java/org/apache/gravitino/dto/requests/TestDropResponse.java
create mode 100644
common/src/test/java/org/apache/gravitino/dto/stats/TestPartitionStatisticsDTO.java
create mode 100644
common/src/test/java/org/apache/gravitino/dto/stats/TestStatisticDTO.java
create mode 100644
core/src/main/java/org/apache/gravitino/stats/storage/PersistedStatistic.java
create mode 100644 docs/manage-jobs-in-gravitino.md
create mode 100644 docs/manage-policies-in-gravitino.md
create mode 100644 docs/open-api/jobs.yaml
create mode 100644 docs/open-api/policies.yaml
create mode 100644
mcp-server/mcp_server/client/plain/plain_rest_client_policy_operation.py
create mode 100644
mcp-server/mcp_server/client/plain/plain_rest_client_statistic_operation.py
create mode 100644 mcp-server/mcp_server/client/policy_operation.py
create mode 100644 mcp-server/mcp_server/client/statistic_operation.py
create mode 100644 mcp-server/mcp_server/tools/policy.py
create mode 100644 mcp-server/mcp_server/tools/statistic.py
copy mcp-server/tests/unit/tools/{test_table.py => test_fileset.py} (56%)
create mode 100644 mcp-server/tests/unit/tools/test_model.py
create mode 100644 mcp-server/tests/unit/tools/test_policy.py
create mode 100644 mcp-server/tests/unit/tools/test_statistic.py
create mode 100644 mcp-server/tests/unit/tools/test_tag.py
copy mcp-server/tests/unit/tools/{test_table.py => test_topic.py} (72%)
create mode 100644
server/src/main/java/org/apache/gravitino/server/web/rest/StatisticOperations.java
create mode 100644
server/src/test/java/org/apache/gravitino/server/web/rest/TestStatisticOperations.java