Proto commits in databendlabs/databend

These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)

Commit:c0b9ed0
Author:张炎泼
Committer:GitHub

feat(meta-service): add initialization complete flag for watch (#17900) When a watch requires initialization flush, the server now sends a flag message indicating when the initialization phase is completed. With this flag, the `cache` module can determine whether data has been fully initialized and is ready to serve, improving reliability of the caching system.

The documentation is generated from this commit.

Commit:b588980
Author:baishen
Committer:GitHub

chore(query): Clean up legacy virtual column codes (#17896) * chore(query): Clean up legacy virtual column codes * fix * fix

Commit:5c021f3
Author:TCeason
Committer:GitHub

feat(query): support create iceberg table with partition and properties (#17812)

Commit:2b37a4d
Author:Kould
Committer:GitHub

feat: impl `Create/Drop` Index for Ngram Index (#17789) * feat: impl `Create/Drop `Index for Ngram Index Signed-off-by: Kould <kould2333@gmail.com> * chore: codefmt Signed-off-by: Kould <kould2333@gmail.com> --------- Signed-off-by: Kould <kould2333@gmail.com>

Commit:06fe62e
Author:Kould
Committer:GitHub

feat: impl udf server add custom header (#17691) * feat: impl udf server add custom header Signed-off-by: Kould <kould2333@gmail.com> * chore: codefmt Signed-off-by: Kould <kould2333@gmail.com> --------- Signed-off-by: Kould <kould2333@gmail.com>

Commit:7386293
Author:Yang Xiufeng
Committer:GitHub

feat: support specifying compression when unloading to parquet. (#17664) compression = zstd | snappy default is zstd.

Commit:f7b611a
Author:张炎泼
Committer:GitHub

refactor: extract map-api and watcher to separate crates (#17594) This commit tries to decouple the map-api and watcher from the state machine, so that they can be used in s3-meta-service. - Extract MapApi and related types to crate databend-common-meta-map-api - Move types: SeqValue, Marked, MapKey, MapValue, etc. - Move functions: compacted_get and compacted_range - Move watcher to separate crate databend-common-meta-watcher - Make watcher types independent of state machine implementation - Introduce generic data types for better abstraction

Commit:a806ed7
Author:Kould
Committer:GitHub

refactor: add `VirtualDataScheam` to `TableMeta` (#17591) * feat: add `VirtualDataSchema` on `TableMeta` Signed-off-by: Kould <kould2333@gmail.com> * test(meta): add test for `VirtualDataSchema` Signed-off-by: Kould <kould2333@gmail.com> * test(meta): add test for `VirtualDataSchema` Signed-off-by: Kould <kould2333@gmail.com> * chore: remove redundant fields in protobuf Signed-off-by: Kould <kould2333@gmail.com> * chore: add virtual column id bound check Signed-off-by: Kould <kould2333@gmail.com> --------- Signed-off-by: Kould <kould2333@gmail.com>

Commit:9eb97c3
Author:Yang Xiufeng
Committer:GitHub

feat: support load Avro Files. (#17548)

Commit:b0835cc
Author:TCeason
Committer:GitHub

feat: object warehouse support rbac (#17262) * feat: object warehouse support rbac * add WAREHOUSE as ident note: only support_forward_warehouse_request will apply warehouse rbac. Now only support SystemResourcesManagement * add new privilege type forward test * add new ident parse func: grant_ident * 1. Normalize the code 2. grant ownership on warehouse object only supported for warehouses managed by the system * fix warehouse uid modify to id * add CreateWarehouse in available_privileges_on_global

Commit:c5e7355
Author:baishen
Committer:GitHub

feat(query): Virtual column support alias name (#17365) * feat(query): Virtual column support alias name * fix * fix machete * add tests * fix tests * fix comments * fix

Commit:17226b8
Author:Xuanwo
Committer:GitHub

feat: Add username support for webhdfs (#17350) * feat: Add username support for webhdfs Signed-off-by: Xuanwo <github@xuanwo.io> * Fix test Signed-off-by: Xuanwo <github@xuanwo.io> --------- Signed-off-by: Xuanwo <github@xuanwo.io>

Commit:12414d3
Author:Xuanwo
Committer:GitHub

feat: Add disable_list_batch for webhdfs (#17345) * feat: Add disable_list_batch for webhdfs Signed-off-by: Xuanwo <github@xuanwo.io> * Fix test Signed-off-by: Xuanwo <github@xuanwo.io> --------- Signed-off-by: Xuanwo <github@xuanwo.io>

Commit:77364e2
Author:Sky Fan
Committer:GitHub

feat: support vacuum aggregating index (#17231) * mark delete index * vacuum drop index * add ut * fix show table function * add compatibility test * add logic test * move test to ee * simplify marked deleted index * fix test * modify comment * make lint * fix result set * remove unnecessary derived trait * add comment * put tenant at first * fix test

Commit:ef5c8bf
Author:zhya
Committer:GitHub

chore: rename default_cluster_key_id to cluster_key_seq (#17135) * chore: rename default_cluster_key_id to cluster_key_seq * fix

Commit:3e03c21
Author:coldWater
Committer:GitHub

feat(query): support javascript/python script User Defined Aggregate Function (#17108) * init * update * update * update * update * refine parser * clear * bind aggregate * bind aggregate * update * test * UDFLanguage * update * fix * test * clean * python * test Signed-off-by: coldWater <forsaken628@gmail.com> * fix * init_state * fix * udaf server * remove UdafServer --------- Signed-off-by: coldWater <forsaken628@gmail.com>

Commit:5921c66
Author:张炎泼
Committer:GitHub

feat: databend-meta watch API provides `initial_flush` field (#17098) * chore: remove unused setting API * feat: databend-meta watch API provides `initial_flush` field If `WatchRequest.initial_flush` is `true`, when the watch stream is established, all the key values in the specified range will be sent through the stream to the watching client. This allows the client to setup a full copy of the key range as a client side cache, and furthur modifications will be received and the client side cache can be updated.

Commit:9a1b6a6
Author:sundyli
Committer:GitHub

chore(query): Revert "feat(query): support javascript/python script User Defined Aggregate Function" (#17107) Revert "feat(query): support javascript/python script User Defined Aggregate …" This reverts commit 6770592e8dc9f1af11cfdd8bb21c9d945088e61b.

Commit:6770592
Author:coldWater
Committer:GitHub

feat(query): support javascript/python script User Defined Aggregate Function (#17054) * init * update * update * update * update * refine parser * clear * bind aggregate * bind aggregate * update * test * UDFLanguage * update * fix * test * clean * python * test Signed-off-by: coldWater <forsaken628@gmail.com> * fix * init_state * fix --------- Signed-off-by: coldWater <forsaken628@gmail.com>

Commit:22f9ba2
Author:张炎泼
Committer:GitHub

feat: databend-meta transaction support generic bool-expression and else-if chain (#17064) Since this commit, application is allowed to specify a complex bool expressions as the transaction predicate. For example, the transaction will execute as if running the following pseudo codes: ``` if (a == 1 || b == 2) && (x == 3 || y == 4) { ops1 } else if (x == 2 || y == 1) { ops2 } else if (y == 3 && z == 4) { ops3 } else { ops4 } ``` ```rust let eq = |key: &str, val: &str| TxnCondition::eq_value(sample(key), b(val)); TxnRequest{ operations: vec![ BoolExpression::new( Some(eq("a", 1).or(eq("b", 2)) .and(eq("x", 3).or(eq("y", 4)))), ops1), BoolExpression::new( Some(eq("x", 2).or(eq("y", 1))), ops2), ], condition: vec![eq("y", 3), eq("z", 4)], if_then: ops3, else_then: ops4, } ``` For backward compatibility, both already existing `condition` and the new `operations` will be evaluated: transaction handler evaluate the `operations` first. If there is a met condition, execute and return. Otherwise, it evaluate `condition` and then execute `if_then` branch or `else_then` branch. TxnReply changes: Add field `execution_path` to indicate the executed branch, which is one of: - `"operation:<index>"`, operation at `index` is executed. - `"then"`: `if_then` is executed. - `"else"`: `else_then` is executed. `TxnReply.success` is set to `false` only when `else` is executed.

Commit:d577e76
Author:张炎泼
Committer:GitHub

feat: add key prefix count assertions to transactions (#17053) Enable transaction conditions based on the number of keys matching a prefix. Example: ```rust let txn = TxnRequest { condition: vec![ TxnCondition::match_keys_with_prefix("key/", Eq, 3) ], //... } ``` This allows transactions to proceed only when a prefix matches an expected number of keys, providing atomic prefix-based cardinality checks. This commit involves a databend-meta server side change: - Add `txn_condition::Target::KeysWithPrefix`. To provide compatibility, any change to the client that uses this feature must update the compatibility doc and upgrade the databend-meta cluster first.

Commit:2e5fec4
Author:TCeason
Committer:GitHub

feat(query): add interval type (#16990) * support Interval DataType :) select to_interval('02:01'), to_interval('1 year 1 day 1 hour'); ┌───────────────────────────────────────────────────────────┐ │ to_interval('02:01') │ to_interval('1 year 1 day 1 hour') │ │ Interval │ Interval │ ├──────────────────────┼────────────────────────────────────┤ │ 2:01:00 │ 1year 1day 1:00:00 │ └───────────────────────────────────────────────────────────┘ * refactor: months_days_ns(pub i32,pub i32,pub i64) -> months_days_micros(pub i128)

Commit:042f6f7
Author:TCeason
Committer:GitHub

feat(rbac): add GrantObject::Warehouse (#17029) Warehouse permissions are granted to roles, and each warehouse can only be assigned to one role.

Commit:7cff135
Author:baishen
Committer:GitHub

feat(query): virtual column allow cast to other type (#16903) * feat(query): virtual column allow cast to other type * add tests * fix typos * fix

Commit:22a8a82
Author:张炎泼
Committer:GitHub

refactor: add new raft-log metrics to "metactl status" response (#16899) These new metrics are added to gRPC API `GetClusterStatus` and corresponding databend-metactl CLI command. Newly added metrics are: ``` $ databend-metactl status # ... RaftLog: - CacheItems: 287 - CacheUsedSize: 4959439 - WALTotalSize: 4378076 - WALOpenChunkSize: 4378058 - WALOffset: 4378076 - WALClosedChunkCount: 1 - WALClosedChunkTotalSize: 18 - WALClosedChunkSizes: - ChunkId(00_000_000_000_000_000_000): 18 ```

Commit:ec9b077
Author:Chase Grainger
Committer:GitHub

feat: add aws glue as an iceberg connection type (#16824) * added aws glue catalog as option for metastore * linted * removed unused dependencies * ran lint * added test * put toml files in order * added proto test * changed test to use glue as a catalog option * added props for test * got rid of extra block_in_place * linted --------- Co-authored-by: chase.grainger <chase.grainger@agvance.net> Co-authored-by: Ubuntu <ubuntu@ip-172-31-26-21.ec2.internal>

Commit:9af8ba3
Author:张炎泼
Committer:GitHub

refactor: align metrics field names with current behavior (#16826) - Rename `db_size` to `raft_log_size`, which is the size of on-disk data of raft-log. - Rename `key_num` to `snapshot_key_count`. This commit updates field names in - the the metrics API, - and the cluster status gRPC API.

Commit:1d93b49
Author:Yang Xiufeng
Committer:GitHub

refactor: isolate session_id and session states of diff users. (#16592) * refactor: put session id under user_name when used as a key. * refactor: put session id under user_name when used as a key. * fix

Commit:2b6431c
Author:张炎泼
Committer:GitHub

refactor: add DatabaseMeta.gc_in_progress (#16464) * refactor: add DatabaseMeta.gc_in_progress If `gc_in_progress` is set, no un-drop can be done on this database. Because the related data may already have been deleted. This commit does not use this flag yet, and will be used in next commit. - Part of #16433 * chore: fix up proto tests version: 109->110

Commit:56efa54
Author:TCeason
Committer:GitHub

feat(query): Procedure Part2 support arguments (#16453) * feat(query): Procedure Part2 support arguments * fix conversation * refactor var_to_ast with parse_expr

Commit:8b19e5e
Author:TCeason
Committer:GitHub

feat(query): Procedure (Part1) (#16348) * feat(query): support procedure 1. support parse * Part2: support interpreter * refactor procedure mgr: use DataId * remove ProcedureIdList, refactor procedure_mgr * fix ut * remove serde::Serialize * fix conflict * add ProcedureIdentity * eaiser ProcedureIdentity en/decode * chore: fix list_dictionaries * fix conflicts

Commit:5f6730a
Author:Yang Xiufeng
Committer:GitHub

feat: add endpoint /v1/session/logout and record client session ID in meta. (#16281) * rename TokenManager to ClientSessionManager. * meta add ClientSession. * SessionCtx add field client_session_id. * rename TokenMgr ClientSessionMgr. * add endpoint /session/logout * remove outdated comments. * http query check session id. * http query log client session id. * test logout. * impl<T> MemSized for Option<T> * fix merge up/main * fix test * small refactor * rm secondary_roles in LoginRequest. * fix http error code * change error code of AuthenticateFailure. * fix error code in test. * update tests. * update tests. * fix clippy

Commit:1d211ec
Author:coldWater
Committer:GitHub

feat(geo): add geography data type (#16286) * add geography type Signed-off-by: coldWater <forsaken628@gmail.com> * fix Signed-off-by: coldWater <forsaken628@gmail.com> * refine Signed-off-by: coldWater <forsaken628@gmail.com> * fix Signed-off-by: coldWater <forsaken628@gmail.com> * move wkb Signed-off-by: coldWater <forsaken628@gmail.com> --------- Signed-off-by: coldWater <forsaken628@gmail.com>

Commit:9e22255
Author:Yang Xiufeng
Committer:GitHub

feat: auth by refresh and session tokens. (#16220) * feat: auth by refresh and session tokens. * fix tests. * remove TokenApi. * polish comments * use Duration const instead of int. * small refactor * /login and /renew return enum. * clean unused code. * more secure nonce. * fix clippy. * remove unused code. * avoid use url path directly. * extract middleware_fn json_response from HttpSessionMiddleware. * fix test. * fix fmt.

Commit:a3a878b
Author:Winnie-Hong0927
Committer:GitHub

feat(meta): Support create dictionary meta api (#16178) * feat(query): support parse create dictionary stmt * feat(query): support parse create dictionary stmt * feat(query): support parse create dictionary stmt * feat(query): support parse create dictionary stmt * feat(query): support parse create dictionary stmt * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto * feat(meta): support meta store proto

Commit:9df7fb2
Author:张炎泼
Committer:GitHub

feat: transfer leader command for meta-service (#16198) This commit introduce a new admin API(at `admin_api_address`, by default `127.0.0.1:28002`) to force the current Leader to transfer leadership to another node. The url of this command is "/v1/ctrl/trigger_transfer_leader?to=<new_leader_node_id>". Such request returns nothing no matter leadership is successfully transferred or not. If the node receives this request is not the leader it does nothing.

Commit:a65013d
Author:codedump
Committer:GitHub

feat: add share catalog (#16172) * refactor: refector ShareMeta struct * refactor: refector ShareMeta struct * refactor: refector ShareMeta struct * feat: add share catalog * feat: add share catalog * feat: add share catalog * feat: add share catalog * feat: add share catalog

Commit:cb33a8e
Author:codedump
Committer:GitHub

refactor: refector ShareMeta struct (#16100) * refactor: refector ShareMeta struct * refactor: refector ShareMeta struct * refactor: refector ShareMeta struct * add created_on in ShareDatabaseSpec * refactor ShareTable, add ShareReferenceTable * make clippy happy * make clippy happy * add ShareMetaV2 protocol test * make clippy happy * make clippy happy * merge from main * refactor by comment * refactor by comment

Commit:ff95a2f
Author:baishen
Committer:GitHub

feat: support must change password option for create user (#16031) * feat: support must change password for new user * fix tests * fix parser * add tests * fix * allow simple select * add comments * fix * fix

Commit:3812049
Author:codedump
Committer:GitHub

feat: refactor share spec location and format (#15989) * feat: refactor share spec location and format * feat: refactor share spec location and format * feat: remove unused code * add db id into share path * refactor uri path * add proto conv test * add share test cases * refactor share db id * add rename\revoke database test cases * fix test fail

Commit:2316935
Author:coldWater
Committer:GitHub

refactor: upgrade QuotaMgr to using protobuf (#15858) * quota read Signed-off-by: coldWater <forsaken628@gmail.com> * set_quota Signed-off-by: coldWater <forsaken628@gmail.com> * refine Signed-off-by: coldWater <forsaken628@gmail.com> * update Signed-off-by: coldWater <forsaken628@gmail.com> * fix Signed-off-by: coldWater <forsaken628@gmail.com> * fix Signed-off-by: coldWater <forsaken628@gmail.com> * rename Signed-off-by: coldWater <forsaken628@gmail.com> * check_and_upgrade_to_pb Signed-off-by: coldWater <forsaken628@gmail.com> * WRITE_PB Signed-off-by: coldWater <forsaken628@gmail.com> * generic const parameter Signed-off-by: coldWater <forsaken628@gmail.com> * add it Signed-off-by: coldWater <forsaken628@gmail.com> * fix Signed-off-by: coldWater <forsaken628@gmail.com> * fix Signed-off-by: coldWater <forsaken628@gmail.com> --------- Signed-off-by: coldWater <forsaken628@gmail.com> Co-authored-by: Bohu <overred.shuttler@gmail.com>

Commit:4d3c394
Author:Yang Xiufeng
Committer:GitHub

feat: parquet add option `missing_field_as`. (#15993) parquet add option `missing_field_as`.

Commit:1c76c7f
Author:Xuanwo
Committer:GitHub

refactor: Use iceberg-rust to replace icelake (#15951) * Save current work Signed-off-by: Xuanwo <github@xuanwo.io> * Save part of work Signed-off-by: Xuanwo <github@xuanwo.io> * Save work Signed-off-by: Xuanwo <github@xuanwo.io> * Save work Signed-off-by: Xuanwo <github@xuanwo.io> * Save work Signed-off-by: Xuanwo <github@xuanwo.io> * Save current work Signed-off-by: Xuanwo <github@xuanwo.io> * Fix build Signed-off-by: Xuanwo <github@xuanwo.io> * remove openssl Signed-off-by: Xuanwo <github@xuanwo.io> * Fix build Signed-off-by: Xuanwo <github@xuanwo.io> * format cargo Signed-off-by: Xuanwo <github@xuanwo.io> * Fix tests Signed-off-by: Xuanwo <github@xuanwo.io> * Fix test for catalog Signed-off-by: Xuanwo <github@xuanwo.io> * Fix test Signed-off-by: Xuanwo <github@xuanwo.io> * iceberg engine will support later Signed-off-by: Xuanwo <github@xuanwo.io> * Pin upstream instead Signed-off-by: Xuanwo <github@xuanwo.io> * Fix sql Signed-off-by: Xuanwo <github@xuanwo.io> * Format cargo Signed-off-by: Xuanwo <github@xuanwo.io> * Fix create catalog should return error Signed-off-by: Xuanwo <github@xuanwo.io> * Add stateful tests for iceberg-rest Signed-off-by: Xuanwo <github@xuanwo.io> * Fix test Signed-off-by: Xuanwo <github@xuanwo.io> * Fix naming Signed-off-by: Xuanwo <github@xuanwo.io> * fix test Signed-off-by: Xuanwo <github@xuanwo.io> * Fix test Signed-off-by: Xuanwo <github@xuanwo.io> * Fix command Signed-off-by: Xuanwo <github@xuanwo.io> * Fix result Signed-off-by: Xuanwo <github@xuanwo.io> * Add test for proto Signed-off-by: Xuanwo <github@xuanwo.io> * Fix build Signed-off-by: Xuanwo <github@xuanwo.io> --------- Signed-off-by: Xuanwo <github@xuanwo.io>

Commit:ffdd0e1
Author:Yang Xiufeng
Committer:GitHub

feat: orc add option missing_field_as. (#15974) * orc add option `missing_field_as`. * test parser. * fix clippy

Commit:7bbd08b
Author:codedump
Committer:GitHub

feat: refactor create database from share ddl (#15950) * feat: refactor create database from share ddl * fix compat read bug * fix test fail * feat: refactor create database from share ddl

Commit:0c04238
Author:TCeason
Committer:GitHub

fix(meta): fix reserved number err (#15955)

Commit:4dfb070
Author:codedump
Committer:GitHub

feat: refactor create share endpoint ddl (#15937) * feat: refactor create share endpoint ddl * feat: refactor create share endpoint ddl * feat: refactor create share endpoint ddl --------- Co-authored-by: Bohu <overred.shuttler@gmail.com>

Commit:af63a77
Author:张炎泼
Committer:GitHub

feat: Persist Meta-Service State Machine on Disk (#15772) This commit introduces a significant change to the meta-service by persisting the state machine on disk rather than loading it entirely into memory. This change aims to reduce memory consumption to a configurable cache size and prevent memory bursts during snapshot creation. **Changes Implemented:** - **Disk-Based State Machine:** - The in-memory state machine has been replaced with a disk-backed implementation using a `rotbl` file (Read-Only on disk Table). - **Efficient Snapshot Building:** - When building a snapshot from the state machine, the output is now written directly to disk, which helps in avoiding double memory consumption. - **Add RPC install_snapshot_v003**: receive a V003 snapshot in binary form. - **New Configurations:** ```rust,ignore /// Whether to check if keys fed to the snapshot are sorted. snapshot_db_debug_check: bool, /// The maximum number of keys allowed in a block within a snapshot database. /// Smaller blocks enable more granular cache control but may increase the index size. snapshot_db_block_keys: u64, /// The total number of blocks to cache. snapshot_db_block_cache_item: u64, /// The total cache size for snapshot blocks, default is 1GB. snapshot_p_db_block_cache_size: u64, ``` **Compatibility:** - On startup, the old V002 snapshot will be upgraded to `V003`. - When receiving a V002 install-snapshot request, it is converted to `V003` after receipt and before installation to the state machine. - Fallback to transport snapshot-v1 if snapshot-v3 is not supported by remote peer. **Detailed Changes:** - **DB Wrapper:** - `DB` acts as a wrapper around `rotbl`, representing an on-disk snapshot and containing meta-service specific information such as metadata and file paths. - **SnapshotStoreV003:** - Provides various snapshot functionalities: - `Self::new_writer` creates a writer for building snapshots from a series of key-value pairs. - `Self::new_loader` creates a loader to load snapshots into the state machine from disk. - `Self::new_receiver` creates a receiver to handle snapshot data from remote peers in binary format. - **Data Export Changes:** - The `DataHeader` is no longer part of the exported snapshot data. - **MapKeyEncode Trait:** - Extracted from `MapKey`, this trait defines the codec behavior for a key used in a `MapApi`. - **Compactor Addition:** - Introduces a `Compactor` responsible for compacting in-memory immutable data or merging immutable data with persisted data. Cherry-picked changes: - refactor: move meta binaries to seperate dir - refactor: improve databend-metactl output

Commit:9904f24
Author:Xuanwo
Committer:GitHub

refactor: Migrate catalog info into table info (#15857) Signed-off-by: Xuanwo <github@xuanwo.io>

Commit:d196cb1
Author:Yang Xiufeng
Committer:GitHub

feat: parquet support option null_if (#15776) * feat: parquet support option null_if - meta. * feat: parquet support option null_if - add is_transform. * feat: parquet support option null_if - add processor. * feat: copy from parquet support option null_if.

Commit:e073e42
Author:zhihanz
Committer:GitHub

feat: add task_history function (#15731) * feat: add task_history function * chore: fix comment

Commit:a130c04
Author:Yang Xiufeng
Committer:GitHub

feat: basic support input file format ORC. (#15720) * feat: support input file format ORC. * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix

Commit:81de6cd
Author:TCeason
Committer:GitHub

feat(query): Role/UserInfo add field create_on and udpate_on (#15661) * feat(query): Role/UserInfo add field create_on and udpate_on In old version the time will be set to Utc::now(). * fix test & delete useless clone * fix ut err * fmt code

Commit:0c7a217
Author:zhihanz
Committer:GitHub

feat: support millisecond level task scheduling (#15599) * feat: support millisecond level task scheduling * chore: fix unit test

Commit:790bd8e
Author:张炎泼
Committer:GitHub

refactor: Remove `install_snapshot` v0 meta-service API (#15590) **Compatibility Changes:** This commit introduces changes to inter-meta-service compatibility, although compatibility between databend-query and meta-service remains unaffected. **Details:** - The initial snapshot transmission API, `install_snapshot` (v0), has been removed from both the meta server and meta client sides. - For clients, the use of `install_snapshot_v1()` transitions from **OPTIONAL** to **REQUIRED**. **Version Requirements:** - Post this commit, the meta-server requires clients to be at least version `1.2.212`, starting from which the clients began using `install_snapshot_v1()`. - Similarly, clients require the server to be at least version `1.2.212`, which is the version where `install_snapshot_v1()` becomes available.

Commit:388f49a
Author:codedump
Committer:GitHub

feat: add meta key_num metrics (#15536) * feat: add meta key_num metrics * feat: add meta key_num metrics

Commit:d01fa36
Author:张炎泼
Committer:GitHub

feat: Add: stream based snapshot API install_snapshot_v2() to meta-service (#15395) feature: Add: stream based snapshot API install_snapshot_v2() to meta-service

Commit:d21a3b9
Author:Fan Yang
Committer:GitHub

feat(query): implement ST_ASGEOJSON (#15214) implement ST_MAKEPOLYGON Signed-off-by: Fan Yang <yangfanlinux@gmail.com>

Commit:f9d2b79
Author:codedump
Committer:GitHub

feat: add sequence meta api (#15247) * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * feat: add sequence meta api * ci * feat: add sequence meta api

Commit:d3a89f7
Author:TCeason
Committer:GitHub

feat(query): add user option: disabled (#15249) * add user option: disabled If you specify DISABLED = TRUE for a user: The user cannot log in again. ```sql -- u1 can not login create user u1 identified by '123' with disabled=true; -- u2 can not login alter user u2 with disabled=true; $ bendsql -uu2 -pabc123; Welcome to BendSQL 0.12.4-unknown. Connecting to localhost:8000 as user u2. Error: APIError: RequestError: Start Query failed with status 401 Unauthorized: {"error":{"code":"401","message":"AuthenticateFailure: user u2 is disabled. Not allowed to login"}} ``` * fix ut error

Commit:8083914
Author:zhya
Committer:GitHub

fix: show locks in current tenant (#15252) * show locks in current tenant * fix review commend * fix review commend

Commit:3305810
Author:张炎泼
Committer:GitHub

refactor: replace String with Tenant in xxxPlan (#15240) * refactor: define IndexNameIdent with TIdent * refactor: define RoleIdent with TIdent * refactor: define UdfIdent with TIdent * refactor: use Tenant in CreateShareEndpointReq * refactor: replace String with Tenant in xxxPlan

Commit:e8f88e7
Author:张炎泼
Committer:GitHub

refactor: define DatabaseNameIdent with TIdent (#15235)

Commit:1ef9e56
Author:Xuanwo

feat: Add azblob stage support Signed-off-by: Xuanwo <github@xuanwo.io>

Commit:a4de86c
Author:张炎泼
Committer:GitHub

refactor: introduce `UninitTenant` and `TIdentRaw` (#15207) * refactor: introduce `UninitTenant` and `TIdentRaw` `Tenant` is a meta-service key component representing a tenant, with a embedded per-tenant config. `UninitTenant` is a shadow of `TIdent` but without config thus it can not be used as a key. `UninitTenant` can be initialized to build a `Tenant` for use as a meta-service key. Correspondingly, this commit introduce `TIdentRaw` as an uninitialized version of `TIdent`. `TIdentRaw` does not cantain per-tenant config and is only used inside meta-service values(not keys), which could be `serde`. Other changes: Populate usage of `Tennat` to `Catalog` implementation. * chore: fix wrong url in share * chore: fix rebase

Commit:fecea50
Author:baishen
Committer:GitHub

refactor: generate inverted indexs for each blocks (#15150) * refactor: generate inverted indexs for each blocks * fix * remove index refreshed_on * add index info file * fix * add offset numbers in index file * fix * fix * fix * fix * fix tests * refactor index info format * rename snapshot indexes as inverted_indexes * fix unit tests --------- Co-authored-by: Bohu <overred.shuttler@gmail.com>

Commit:1541158
Author:张炎泼
Committer:GitHub

refactor: replace `NonEmptyString` with `Tenant` (#15103) * refactor: replace `NonEmptyString` with `Tenant` - Part of #14719

Commit:78d26b2
Author:baishen
Committer:GitHub

feat(query): Support hook refresh inverted index after insert (#15094) * feat(query): Support hook refresh inverted index after insert * fix * add meta test * remove settings * http test max_wait_time to 1s

Commit:eeed57b
Author:张炎泼
Committer:GitHub

refactor: BackgroundTaskIdent use Tenant (#15080) Remove `impl FromToProto for BackgroundTaskIdent`, it does not need to be encoded to protobuf. - Part of #14719

Commit:6485d5c
Author:张炎泼
Committer:GitHub

refactor: separate key and value: add `BackgroundTaskCreator` (#15063) refactor: add `BackgroundTaskCreator` `BackgroundJobIdent` is a kvapi::Key but not a value. It does not need to be `serde`. Thus in this commit we create another struct `BackgroundTaskCreator` with the same structure as `BackgroundJobIdent` for usage in values. And remove `serde` declaration from `BackgroundJobIdent`. - Part of #14719

Commit:341fb34
Author:zhihanz
Committer:GitHub

feat: support pagination on task_history (#15047)

Commit:3c98535
Author:Yang Xiufeng
Committer:GitHub

feat: ndjson support option null_if. (#14938)

Commit:a9d1fac
Author:baishen
Committer:GitHub

feat(query): create drop inverted index (#14859) * feat(query): create drop inverted index * fix typos * fix tests * fix tests * rewrite as table index * index use column ids * check column id exist

Commit:1c84a7a
Author:zhihanz
Committer:GitHub

feat: add transaction and mutli-line SQL script support for task (#14865) * feat: add multi-line SQLscripts support for task * feat: try add sql script support for task SQL * chore: fix unit-test

Commit:6547e14
Author:zhihanz
Committer:GitHub

feat: support notification syntax with rpc, and support task error notification integration (#14845) * feat: support notification rpc and task notification * feat: remove external library protoc dependencies * chore: apply comment rename utils.proto to timestamp.proto --------- Co-authored-by: Bohu <overred.shuttler@gmail.com>

Commit:6777c17
Author:sundyli
Committer:GitHub

feat(query): introduce arrow-udf-js (#14799) * feat: support code string block * feat: support udf interpreter create * feat: support udf interpreter create * feat: update * feat: upgrade arrow to version 50 * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * update * update * update * update * update * update * update * update * update * update * update --------- Co-authored-by: Bohu <overred.shuttler@gmail.com>

Commit:4670638
Author:张炎泼
Committer:GitHub

feat: get_client_info() returns the server time in milliseconds (#14805)

Commit:97e7a31
Author:Yijun Zhao
Committer:GitHub

feat(geo): add geometry data type (#14470) add geometry data type

Commit:f62e69c
Author:Chojan Shang
Committer:GitHub

feat: add column create_on for user functions table (#14540) * feat(meta): add created_on field to UserDefinedFunction Signed-off-by: Chojan Shang <psiace@apache.org> * feat(udf): add created_on field to show user functions Signed-off-by: Chojan Shang <psiace@apache.org> * feat(stateless): add timestamp test for udf Signed-off-by: Chojan Shang <psiace@apache.org> --------- Signed-off-by: Chojan Shang <psiace@apache.org>

Commit:c1ed57d
Author:张炎泼
Committer:GitHub

feat: meta-service: customize chunk size when export (#14467) * chore: update databend version for last meta-service API change * feat: meta-service: customize chunk size when export Use `databend-metactl --export --export-chunk-size <n>` to export all meta data with a stream in which each item contains at most `n` lines. Specify smaller value for `--export-chunk-size` if got an `gRPC message body too large error`. `--export-chunk-size` requries v1.2.315 and will be ignored when connecting to a older meta-service. * chore: clean unused dep: tonic * chore: fix missing method for meta-service tests

Commit:6d2e0b1
Author:zhihanz
Committer:GitHub

feat: allow to config task session parameters. (#14446) * feat: support add session parameters during create task * support to show and alter session parameters * chore: add alter session parameter test

Commit:61e747e
Author:Xuanwo
Committer:GitHub

feat: Remove the need of setting allow_anonymous (#14398) * feat: Remove the need of setting allow_anonymous Signed-off-by: Xuanwo <github@xuanwo.io> * Add test Signed-off-by: Xuanwo <github@xuanwo.io> * Fix test Signed-off-by: Xuanwo <github@xuanwo.io> --------- Signed-off-by: Xuanwo <github@xuanwo.io>

Commit:7be0a5e
Author:TCeason
Committer:GitHub

fix(query): use serde_json maybe cause old query can not access data that generate by new query (#14380) 1. get method will try to deserialize with json, if failed, deserialize with pb 2. can not add or upsert will serialize with pb in this pr. Prevents an issue where old query cannot read data written by new query during a rolling upgrade. 3. add some log Co-authored-by: 张炎泼 <drdr.xp@gmail.com>

Commit:998f8b3
Author:zhihanz
Committer:GitHub

feat: add task_depents and task_dependents_enable function (#14383) * feat: add task functions * feat: add task_dependents and task_dependents_enable function * chore: fix unit test on CI * chore: fix comment and migrate task relevant functions to cloud Dir * chore: fix license check

Commit:8cb4acc
Author:张炎泼
Committer:GitHub

refactor: do not use `TxnPutRequest|TxnDeleteRequest.prev_value`, always return previous value (#14371) Meta-service does not check `TxnPutRequest.prev_value` and `TxnDeleteRequest.prev_value` any more, and always assumes it is true. When a `Put` or `Delete` request is executed, the previous value before `Put` will always be responded.

Commit:0434932
Author:Yang Xiufeng
Committer:GitHub

feat: CSV format add option binary_format and output_header. (#14329) * feat: CSV format add option `binary_format` and `output_header`. * ci: add tests. * fix clippy. * fix tests.

Commit:094e1db
Author:TCeason
Committer:GitHub

refactor(query): delete owner in table/db meta (#14307) * delete owner in table/db meta get owner info in meta * add meta test --------- Co-authored-by: Bohu <overred.shuttler@gmail.com>

Commit:3d64c4c
Author:Xuanwo
Committer:GitHub

feat: Add huggingface support (#14304) * Add huggingface config Signed-off-by: Xuanwo <github@xuanwo.io> * Add meta api Signed-off-by: Xuanwo <github@xuanwo.io> * Add test for huggingfaceconfig Signed-off-by: Xuanwo <github@xuanwo.io> * Allow parse huggingface Signed-off-by: Xuanwo <github@xuanwo.io> * Add create huggingface stage test Signed-off-by: Xuanwo <github@xuanwo.io> * Allow querying from huggingface Signed-off-by: Xuanwo <github@xuanwo.io> * Add commento for fields Signed-off-by: Xuanwo <github@xuanwo.io> --------- Signed-off-by: Xuanwo <github@xuanwo.io>

Commit:4b0bbe0
Author:Yang Xiufeng
Committer:GitHub

feat: CSV add option empty_field_as. (#14269) * feat: CSV add option empty_field_as. * fix. * fix reading header only csv file. * fix date in META_CHANGE_LOG.

Commit:3a107d6
Author:张炎泼
Committer:GitHub

refactor: move GrpcHelper to crate common-types (#14277) * chore: minor refactor * refactor: move GrpcHelper to crate common-types `GrpcHelper` will be used by both meta-service and meta-client.

Commit:f9d27b7
Author:张炎泼
Committer:GitHub

chore: update doc about compatibility changes (#14260) Since databend-query 1.2.287, it requires at least meta-service 1.2.226 or newer.

Commit:2429b56
Author:baishen
Committer:GitHub

chore(query): fix password policy typos (#14246)

Commit:c63d107
Author:baishen
Committer:GitHub

feat(query): Support check password policy when login (#14124) * feat(query): Support check password policy when login * fix * add logs * add comments

Commit:dc071fc
Author:Andy Lok
Committer:GitHub

feat(expr): add Binary type (#14142) * feat(expr): add Binary type * fix * add parser * fix * fix * fix * fix * fix * fix * fix * revert arrow-related things * fix * fix * fix

Commit:813d3e4
Author:zhihanz
Committer:GitHub

feat: support to build DAG on task DDL (#14141) * feat: add task dag sql semantic * feat: support task DAG * chore: fix comments

Commit:4992dd2
Author:TCeason
Committer:GitHub

fix(query): grant object use table/db id (#14016) * fix * add tablebyid and databasebyid * add func validate_table_access and validate_db_access 1. first to check db_name and table_name, if retrun err, check db_id and table_id. This is compatible with names stored in older versions 2. RewriteKind::ShowTables and ShowColumns need to save item catalog_name 3. information_schema and system.one remove from public role, skip these select in privilege::check and system.tables/databases/columns must store information_schema * add GrantObject::Table/DatabaseById meta proto test * Update src/query/service/src/interpreters/access/privilege_access.rs Co-authored-by: flaneur <me.ssword@gmail.com> * Update src/query/service/src/interpreters/access/privilege_access.rs Co-authored-by: flaneur <me.ssword@gmail.com> * fix_conversation --------- Co-authored-by: flaneur <me.ssword@gmail.com>

Commit:9a58e79
Author:Yijun Zhao
Committer:GitHub

refactor: refactor create agg index (#14085) * refactor create agg index * refactor create agg index * fix sqllogic tests * add some comments

Commit:6ca39c9
Author:baishen
Committer:GitHub

feat(query): Support create/alter/drop/desc/show password policy (#14012) * feat(query): Support create password policy * fix

Commit:614d556
Author:张炎泼
Committer:GitHub

chore: fix license (#14060)

Commit:a64551c
Author:张炎泼
Committer:GitHub

feat: Introduced `MetaSpec` for setting relative expiration (#14041) This is a compatible change with new feature provided. - This commit introduces a new type, `MetaSpec`, which specifies content of the `KVMeta` to be stored for a key. This new type is particularly utilized in `upsert` requests to enable the setting of relative expiration times. Previously, the `KVMeta` type was used directly for this purpose. However, to avoid impacting existing storage data types, `MetaSpec` has been specifically added for use in `upsert` operations. When applying a raft-log, a `KVMeta` is built from `MetaSpec`. Designed with backward compatibility, `MetaSpec` maintains a serialized format compatible with `KVMeta`, ensuring no disruption to existing functionality. - We introduce two new types `Time` and `Interval` to reprensent serde-able time stamp and time interval. - Tests are added to ensure meta-service works correctly with API with ttl support, but databend-query does not use these API yet.