Skip to content

[#7836] feat(storage): Add partition statistics storage interface#7849

Closed
roryqi wants to merge 105 commits intoapache:mainfrom
qqqttt123:ISSUE-7836
Closed

[#7836] feat(storage): Add partition statistics storage interface#7849
roryqi wants to merge 105 commits intoapache:mainfrom
qqqttt123:ISSUE-7836

Conversation

@roryqi
Copy link
Contributor

@roryqi roryqi commented Jul 30, 2025

What changes were proposed in this pull request?

Add partition statistics storage interface

Why are the changes needed?

Fix: #7836

Does this PR introduce any user-facing change?

Developer API, not for users.

How was this patch tested?

Just an interface.

roryqi and others added 30 commits July 8, 2025 17:08
### What changes were proposed in this pull request?

 Validate JDBC connection for unsafe operations.

### Why are the changes needed?

To stop potentially unsafe operations.

Fix: apache#7547

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Locally, plus added unit tests.

---------

Co-authored-by: Mini Yu <yuqi@datastrato.com>
…expression (apache#7582)

<!--
1. Title: [#<issue>] <type>(<scope>): <subject>
   Examples:
     - "[apache#123] feat(operator): support xxx"
     - "[apache#233] fix: check null before access result in xxx"
     - "[MINOR] refactor: fix typo in variable name"
     - "[MINOR] docs: fix typo in README"
     - "[apache#255] test: fix flaky test NameOfTheTest"
   Reference: https://www.conventionalcommits.org/en/v1.0.0/
2. If the PR is unfinished, please mark this PR as draft.
-->

### What changes were proposed in this pull request?

This is a refactor of builder method for `LiteralDTO`,
`FieldReferenceDTO`, `FuncExpressionDTO`, and `UnparsedExpressionDTO`
that is proposed in the
[comments](apache#7498 (review))
of the previous PR.

### Why are the changes needed?

We need to support Column and its default value in python client.

apache#5202

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Unit tests

---------

Signed-off-by: George T. C. Lai <tsungchih.hd@gmail.com>
### What changes were proposed in this pull request?

unifed code style, the boolean type check use ` if( exp ) or if( !exp )
rather than if ( exp == true ), if (exp == false ) `

### Why are the changes needed?

close apache#7596

### Does this PR introduce _any_ user-facing change?

No, just code style change

### How was this patch tested?

using existing tests
<!--
1. Title: [#<issue>] <type>(<scope>): <subject>
   Examples:
     - "[apache#123] feat(operator): support xxx"
     - "[apache#233] fix: check null before access result in xxx"
     - "[MINOR] refactor: fix typo in variable name"
     - "[MINOR] docs: fix typo in README"
     - "[apache#255] test: fix flaky test NameOfTheTest"
   Reference: https://www.conventionalcommits.org/en/v1.0.0/
2. If the PR is unfinished, please mark this PR as draft.
-->

### What changes were proposed in this pull request?

clean up unused method in `NameIdentifierUtil` class

### Why are the changes needed?

close issue apache#7588

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

using existing tests
…vent listener (apache#6485)

### What changes were proposed in this pull request?

Adding `transformPreEvent` method to `EventListenerPlugin` to make event
listener modify pre-events.

```java
public interface EventListenerPlugin {
  default SupportsChangingPreEvent transformPreEvent(SupportsChangingPreEvent preEvent) {
    return preEvent;
  }
}
```

### Why are the changes needed?

Fix: apache#6486 

### Does this PR introduce _any_ user-facing change?
no

### How was this patch tested?
change the iceberg request and it take affects when creating table in
local enviroment
### What changes were proposed in this pull request?

update github issue template, update version dropdown list
…2) (apache#7361)

### What changes were proposed in this pull request?

Add policy entity and POConverters

### Why are the changes needed?

Fix: apache#7552 

### Does this PR introduce _any_ user-facing change?

no

### How was this patch tested?

tests added
…apache#7578)

### What changes were proposed in this pull request?
Support MySQL external type with Trino.

### Why are the changes needed?

Fix: apache#7338
Fix: apache#7339

### Does this PR introduce _any_ user-facing change?
no

### How was this patch tested?
local integration-test
### What changes were proposed in this pull request?

This PR proposes to add the Java and Python API for Job System.

### Why are the changes needed?

This is the first work of apache#7154 

Fix: apache#7503 

### Does this PR introduce _any_ user-facing change?

Yes

### How was this patch tested?

Tests will be added later on.
### What changes were proposed in this pull request?

Fix catalog

### Why are the changes needed?

So it correct

Fix: #N/A

### Does this PR introduce _any_ user-facing change?

None

### How was this patch tested?

N/A
…7600)

### What changes were proposed in this pull request?

The `EntityType ` class has short name variable, but it's duplicated.
Table and Tag both used `ta`.
And the short name is not used anymore.
This pr is try to clean up related code.


### Why are the changes needed?


Fix: apache#7597
### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Use existing tests.
…#7651)

### What changes were proposed in this pull request?

This PR proposes the removal of duplicated code that appears twice in
the CLI module.

### Why are the changes needed?

Fix: apache#7639 

### Does this PR introduce _any_ user-facing change?

None

### How was this patch tested?

I verified this patch by reviewing and running the existing test
clinets:cli
### What changes were proposed in this pull request?

Add a null check before entity type check.

### Why are the changes needed?

Previously, `validateEntityHasIdentifier` only validates the entity type
but doesn't check if the entity is null before accessing its properties,
which may cause misleading error messages.
Fix: apache#7636

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

Existing tests.
…mplate (apache#7657)

### What changes were proposed in this pull request?

Add a call of the existing `validation` method before object
construction in `build`.

### Why are the changes needed?

`validate` method exists with proper validation logic but is never
called during object construction.
Fix: apache#7640

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

Existing tests.
### What changes were proposed in this pull request?

Added 2 more precondition checks to `Namespace`:
1. leading single dot 
2. contains double dot

### Why are the changes needed?

To enforce a stricter namespace validation.
Fix: apache#7635 

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

Existing tests.
### What changes were proposed in this pull request?

Replace the second usage of
`httpRequest.getHeader(FilesetAuditConstants.HTTP_HEADER_FILESET_DATA_OPERATION)`
with `dataOperation` which was previously defined.

### Why are the changes needed?

Cleaner and less code.
Fix: apache#7632 

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

Existing tests.
…ashCode method of SparkJobTemplate (apache#7653)

### What changes were proposed in this pull request?

Added Missing @OverRide annotation

### Why are the changes needed?

Fix: apache#7641 

### Does this PR introduce _any_ user-facing change?

None

### How was this patch tested?

Execute existing api module test
…nMetadataObject (apache#7650)

### What changes were proposed in this pull request?

Added a check for empty names during validation in
validateAuthorizationMetadataObject

Fix: apache#7592

### Does this PR introduce any user-facing change?
No

### How was this patch tested?
Tested with a unit test
… in HTTPClient (apache#7601)

### What changes were proposed in this pull request?

Added a null check for empty headers before adding request headers in
HTTPClient.

Closes: [apache#7589](apache#7589)

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Added a unit test.
### What changes were proposed in this pull request?

fix index existence check

### Why are the changes needed?

Fix: apache#7591 

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

tests added.

Co-authored-by: senlizishi <weixubin@gmail.com>
### What changes were proposed in this pull request?

Add support for MODEL provider in CLI catalog creation command by:
- Add MODEL constant definition
- Add MODEL to valid providers set
- Handle MODEL provider in internal() method
- Set catalog type to MODEL for model provider

### Why are the changes needed?

Currently, the CLI throws "Unsupported provider: model" error when
trying to create a model catalog. This prevents users from using the CLI
to manage model catalogs, even though the server supports model
catalogs.

Fix: CLI does not support create model catalog now

### Does this PR introduce *any* user-facing change?

Yes, this PR introduces the following user-facing change:
- Users can now use CLI command `gcli.sh catalog create --metalake
<metalake> --name <name> --provider model` to create model catalogs
- The CLI will no longer throw "Unsupported provider: model" error for
model provider

### How was this patch tested?

- Built the project successfully with `./gradlew build`
- Ran CLI tests with `./gradlew :clients:cli:test` - all tests passed
- **Manual testing**: CLI command `catalog create --metalake yedian
--name model --provider model` now successfully creates model catalog
instead of throwing "Unsupported provider: model" error
- Verified the fix by starting local Gravitino server and testing the
complete workflow
…che#7654)

### What changes were proposed in this pull request?
Added DB name validation to the createDatabase method to secure DB
creation.

Fix: apache#7585 

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Tested with unit tests to validate if invalid names are rejected and the
names in the TestDatabaseName enum are accepted
### What changes were proposed in this pull request?

Logging configuration moved to module level, handler added only once
when module is imported.

### Why are the changes needed?

The previous logger implementation in `http_client.py` creates a log
handler every time a `Response` object is instantiated, which may cause
log message duplication and consume unnecessary memory over time.
Fix: apache#7583 

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

Existing tests for `client-python`.
hqbhoho and others added 28 commits July 30, 2025 21:46
…QL (apache#7733)

### What changes were proposed in this pull request?

Support show index info with MySQL

### Why are the changes needed?
`show create table`  would display the index info of MySQL table.
```sql
-- In MySQL
CREATE TABLE gt_mysql_test_index.demo_with_primary_key_and_unique_key
(
    key1 INT,
    key2 INT,
    col1 INT,
    primary key (key1),
    unique key unique_key1 (key2)
);
-- In Trino 
-- show create table
CREATE TABLE gt_mysql.gt_mysql_test_index.demo_with_primary_key_and_unique_key (
   key1 integer NOT NULL,
   key2 integer,
   col1 integer
)
COMMENT ''
WITH (
   engine = 'InnoDB',
   primary_key = ARRAY['key1'],
   unique_key = ARRAY['unique_key1:key2']
)
```

Fix: apache#7701

### Does this PR introduce _any_ user-facing change?
no

### How was this patch tested?

local tests
Signed-off-by: zacsun <zacsun@lilith.com>
Signed-off-by: zacsun <zacsun@lilith.com>
Signed-off-by: zacsun <zacsun@lilith.com>
Signed-off-by: zacsun <zacsun@lilith.com>
Signed-off-by: zacsun <zacsun@lilith.com>
### What changes were proposed in this pull request?

Include useful info e.g. user, operation, metadata object in the error
messages when auth fails.

### Why are the changes needed?

Fix: apache#7753 

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?


`org.apache.gravitino.server.web.filter.TestGravitinoInterceptionService`
### What changes were proposed in this pull request?
change content type to 'application/x-www-form-urlencoded' for token api

### Why are the changes needed?
login page has been blocked by CORS policy

Fix: apache#7541

### Does this PR introduce _any_ user-facing change?
N/A

### How was this patch tested?
manually
…h multiple URIs (apache#7622)

### What changes were proposed in this pull request?

This PR implements operations for model version with multiple URIs.

### Why are the changes needed?

Fix: apache#7382 

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

UT.

---------

Co-authored-by: zhanghan <zhanghan18@xiaomi.com>
apache#7671)

### What changes were proposed in this pull request?


Add interfaces and related classes for StarRocks, implementation will be
in the next PR.

### Why are the changes needed?

To support more catalogs.

Fix: apache#7667 

### Does this PR introduce _any_ user-facing change?

N/A.

### How was this patch tested?

Test locally.
…ne. (apache#7785)

### What changes were proposed in this pull request?

Increase the timeout time for build task from 30m to 60m.

### Why are the changes needed?

30m is not enough as the project introduces more modules.

Fix: apache#7784

### Does this PR introduce _any_ user-facing change?

N/A.

### How was this patch tested?

Exsiting CI.
…apache#7564)

### What changes were proposed in this pull request?

add a basic framework for policy management

### Why are the changes needed?

Fix: apache#7143 

### Does this PR introduce _any_ user-facing change?

no

### How was this patch tested?

Tests will be added after the logic is implemented.
…mns with precision (apache#6657)

### Why are the changes needed?

Fix: apache#6656

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

UT already added.

---------

Signed-off-by: zacsun <zacsun@lilith.com>
…ts for empty strings (apache#7755)

### What changes were proposed in this pull request?
Update strToSeq to return empty lists for empty strings

### Why are the changes needed?
Fix: apache#7702 

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

Added a unit test
…thorization (apache#7736)

### What changes were proposed in this pull request?

Support user、role、permission、grant operation authorization

### Why are the changes needed?

close apache#7737 

### Does this PR introduce _any_ user-facing change?

None

### How was this patch tested?


org.apache.gravitino.client.integration.test.authorization.UserAuthorizationIT

org.apache.gravitino.client.integration.test.authorization.PermissionAuthorizationIT

org.apache.gravitino.client.integration.test.authorization.RoleAuthorizationIT

org.apache.gravitino.client.integration.test.authorization.GroupAuthorizationIT

org.apache.gravitino.client.integration.test.authorization.OwnerAuthorizationIT
…part-2) (apache#7772)

### What changes were proposed in this pull request?

This is the second part of the job framework PR to add the job executor
interface and complete the job framework.

### Why are the changes needed?

Fix: apache#7505 

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

Add UTs to cover the code changes.
…r gravitino client (apache#7495)

### What changes were proposed in this pull request?

Support pass custom http client config when using the Java Gravitino
Client.

### Why are the changes needed?

- We can config connectionTimeout or socketTimeout and so on.

Fix: apache#7456

### Does this PR introduce _any_ user-facing change?

- support http client config

|config      | default | Description |
| ----------- |----------- |----------- |
|gravitino.client.connectionTimeoutMs | null | An optional http
connection timeout in milliseconds|
|gravitino.client.socketTimeoutMs | null | An optional http socket
timeout in milliseconds |

- add `withClientConfig` in
`org.apache.gravitino.client.GravitinoClientBase.Builder`
```
 Map<String, String> properties =
        ImmutableMap.of(
            "gravitino.client.connectionTimeoutMs", "10", 
            "gravitino.client.socketTimeoutMs", "10"
        );
            
GravitinoClient.builder("uri")
.withMetalake("metalake")
.withClientConfig(properties) // add custom client config (optional)
.builder(); 

GravitinoAdminClient.builder("uri")
.withClientConfig(properties) // add custom client config (optional)
.builder();            
```

### How was this patch tested?
original Uts

Co-authored-by: Jerry Shao <jerryshao@datastrato.com>
### What changes were proposed in this pull request?

add StarRocks Catalog Implement

### Why are the changes needed?

To support StarRocks Catalog.

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

By E2E test, the test is in another pr

apache#7792
### What changes were proposed in this pull request?

Adding configs required for Azure based oAuth login
These will not cause any problems with the current oAuth as these are
just additional configs exposed in /configs endpoint

### Why are the changes needed?

These changes will be used in future PRs for Azure MSAL based oAuth
support in the front end code, through /configs endpoint

Fix: apache#7538 

### Does this PR introduce _any_ user-facing change?

This does not introduce user facing changes. Only changing the /configs
API response for now

### How was this patch tested?

(Please test your changes, and provide instructions on how to test it:
Tested in local deployment.
Enabled Azure oauth by
```
gravitino.authenticators = oauth
gravitino.authenticator.oauth.provider = azure
```
and set
gravitino.authenticator.oauth.azure.client-id ,
gravitino.authenticator.oauth.azure.authority,
gravitino.authenticator.oauth.azure.redirect-uri,
gravitino.authenticator.oauth.azure.jwks-uri,
gravitino.authenticator.oauth.azure.scope

along with existing oauth required parameters (we can modify this in
future to make it such that if provider is set, the current oauth params
need not be "required")
Configs endpoint returns:
<img width="1135" height="282" alt="Screenshot 2025-07-22 at 12 05
23 PM"
src="https://github.com/user-attachments/assets/f0801088-5330-4e64-b2e3-ff9ad7bc02a3"
/>
…imitation (apache#7808)

### What changes were proposed in this pull request?
- The `primary key` must be `not null`
-  The auto increment `unique key` must be `not null`

### Why are the changes needed?
Fix: apache#7807

### Does this PR introduce _any_ user-facing change?
no

### How was this patch tested?
local tests
…etadata object. (apache#7830)

### What changes were proposed in this pull request?

Use set to remove duplicated tags when list all tags for a metadata
object.

### Why are the changes needed?

We need to eliminate duplicates.

Fix: apache#7688 

### Does this PR introduce _any_ user-facing change?

N/A

### How was this patch tested?

UT
…info with MySQL (apache#7810)

### What changes were proposed in this pull request?
Support create mysql table with index info in Trino like this:
```sql
CREATE TABLE gt_mysql.gt_mysql_test_index.demo_with_primary_key_and_unique_key (
   key1 integer NOT NULL,
   key2 integer,
   col1 integer
)
COMMENT ''
WITH (
   engine = 'InnoDB',
   primary_key = ARRAY['key1'],
   unique_key = ARRAY['unique_key1:key2']
)
```

### Why are the changes needed?
Fix: apache#7809

### Does this PR introduce _any_ user-facing change?
no

### How was this patch tested?
local tests
apache#7767)

### What changes were proposed in this pull request?

Launch an init container named sqlfile to mount the scripts path to pod
shared volumes.
Launch another init container named init-sql to init the table that
Gravitino required.
Remove the scripts folder in chart.

### Why are the changes needed?

Fix: apache#7766

### Does this PR introduce _any_ user-facing change?

N/A

### How was this patch tested?

CI
### What changes were proposed in this pull request?

Support check deny privilege

### Why are the changes needed?

Fix: apache#7795 

### Does this PR introduce _any_ user-facing change?

None

### How was this patch tested?

Existing metadata authentication for IT and UT
…tions (apache#7818)

### What changes were proposed in this pull request?

Just documents.

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

No need.
<!--
1. Title: [#<issue>] <type>(<scope>): <subject>
   Examples:
     - "[apache#123] feat(operator): support xxx"
     - "[apache#233] fix: check null before access result in xxx"
     - "[MINOR] refactor: fix typo in variable name"
     - "[MINOR] docs: fix typo in README"
     - "[apache#255] test: fix flaky test NameOfTheTest"
   Reference: https://www.conventionalcommits.org/en/v1.0.0/
2. If the PR is unfinished, please mark this PR as draft.
-->

### What changes were proposed in this pull request?

add StarRocks Catalog Implement

### Why are the changes needed?

To support StarRocks Catalog.

### Does this PR introduce _any_ user-facing change?

No

### How was this patch tested?

By E2E test, the test is in another pr

apache#7792
@roryqi roryqi marked this pull request as draft July 30, 2025 14:02
@roryqi roryqi closed this Jul 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Subtask] Add partition stats storage API