This is an automated email from the ASF dual-hosted git repository.
fresh-borzoni pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/fluss.git
from 8cd8d1628 [lake] Fix union read duplicating rows for non-String
partition columns (#3500)
add dfc06b0a6 Initial Commit
add 2ab9022c1 Initial Commit
add c912ccd7c [github] Update GitHub issue template
add f83b32ca6 [feat] Support basic write & read (#2)
add 40cfb79e6 [hotfix] Ignore some file license check (#4)
add 69b0ead1a [feat] Add more functions to the Rust client Admin (#5)
add 4779328d2 [feat] Set up uv, ruff, and other settings for Python
binding (#7)
add bb8abafa1 [feat] Create Python bindings for metadata (#8)
add 757a833a8 [feat] Create Python bindings for Fluss Admin (#6)
add 1d937bbe8 [chore] Introduce IT infra and add IT for database
operations in admin (#28)
add 9533ce2e7 [chore] Supports PyO3 in m1 arm 64 (#33)
add a2cc54dd4 [feat] Create Python bindings for table writing and reading
(#9)
add 2f722d285 [test] Add IT for table operation in admin (#32)
add 1ec45d3c3 [feat] Add examples and stub files for Python bindings (#10)
add c0374eb31 [chore] Move list offsets to admin (#35)
add b27625907 [feat] Support append arrow record batch (#34)
add 073d41ba8 [chore] Bump arrow version to 57 (#58)
add 6ea79746e chore: add integration test for scan records after append
(#51)
add fdbe7f4ac [chore] Add ipc_compression feature to arrow dependency (#59)
add a62d9fe42 [chore] Fix build fail on mac os (#61)
add 121a03606 feat: implement get_long for GenericRow (#49)
add 236ae5af4 feat: implement Display trait for DataType and related types
(#50)
add 3d3de438e chore: fix ci (#69)
add 0f8ff0b50 feat: support ColumnPruning (#57)
add de9022e70 feat: Implement JsonSerde for all datatypes (#53)
add f98f49fcf chore: implemented all get methods for GenericRow (#82)
add 123998000 chore: fix GenericRow null detection (#86)
add 5ed475e9f chore: Implement datatype conversion for all types in
arrow.rs (#81)
add c3f110436 feat: introduce cpp bindings (#83)
add 8e273a801 chore: update readme to mark it as official rust client (#88)
add bf42412bb chore: abort last not complete batch (#91)
add d5586643d feat: support subscribe from remote (#76)
add 5b31e28a9 chore: upgrade opendal and adopt jiff (#95)
add d634a7083 chore: use log over tracing (#96)
add 746f94883 feat: support s3 as remote segment (#93)
add 57ebe0c49 chore: parse_ipc_message should return exception instead of
return None if parse failed (#97)
add e585d1f0a chore: Improve error (#77)
add 7772f15e8 chore: Update the InternalRow Trait: get_binary, get_bytes
to return &[u8] (#104)
add f4b0628b2 chore: optimize get_char method (#105)
add f55375905 feat: support ListOffset/SubscribeBatch/DropTable for cpp
bindings (#100)
add 391891753 chore: introduce prefetch to improve log poll performance
(#103)
add 7515f7159 chore: fix bug where column prune won't work when
compression is enabled (#108)
add 2bf3701aa chore: scanner should retry when bucket lead is not
available (#102)
add 02ca3eb4f chore: add integration test for list offsets (#52)
add 4a225d501 feat: Introduce HashBucketAssigner (#117)
add eea8da1fd chore: rust client to return error when currently
unimplemented non-default ZSTD compression is configured (#120)
add 3d8483ef5 chore: add integration tests for subscribe_batch and
project_by_name (#116)
add 2fc00e2c1 feat: support bazel build for cpp bindings (#107)
add 9f834df90 feat: implement CompactedRowWriter (#121)
add 83c452563 chore: add license header to fix ci (#123)
add 526d360f4 feat: return error for partitioned tables in
FlussConnection#get_table (#115)
add 49c304332 chore: fix append hang issue (#126)
add 6459f2cdb chore: Fix scanner's example documentation test to allow
`cargo test --release` to complete (#129)
add 305a44873 feat: introduce CompactedKeyEncoder (#124)
add 1f5479505 feat: log scanner support poll record batch directly
add d61086fa8 feat: introduce CompactedRowReader, CompactedRow,
CompactedRowDeserializer (#131)
add 98497bef8 chore: fix Box leaking and batch API refactor (#136)
add 0f4f4ec62 chore: Improve write path error handling logic (#132)
add 69b3ccc3d chore: improve datum, use Cow to reduce verbosity and avoid
Box::leak gymnastics (#139)
add e9d16ae99 chore: implement zero copy in CompactedRowReader (#138)
add 979c0d428 chore: fix potential deadlock with holding lock during await
(#145)
add 63509b155 chore: decrement flushes_in_progress counter in
await_flush_comp (#147)
add 3cdc49526 chore: add DEVELOPMENT.md (#155)
add d8fdcc7a3 feat: introduce KvRecordBatchBuilder (#156)
add 207a7d183 chore: Introduce WriteFormat and various small changes to
unblock Upsert implementation (#158)
add b9cc78bf3 feat: Introduce CompactedRowEncoder (#161)
add c4d5b0214 feat: add column projection support to Python LogScanner
(#151)
add dce62d6d4 chore: fix read deadlock (#165)
add 93048ed0d feat: introduce lookup support for primary key tables (#159)
add 9ce10ce55 feat: Introduce python bindings row-based append API (#142)
add a4409833d chore: Improve read path error handling logic (#143)
add ffc026ddc chore: correct log record batch checksum bounds (#172)
add 41f824fe7 feat: Introduce KVReadContext and read path wiring (#174)
add f519ad9f8 feat: introduce KvWriteBatch and PutKvRequest (#176)
add db565f97e feat: support all basic datatypes in compacted key
encoder(continuation) (#175)
add 0e31ef49c feat: Introduce UpsertWriter (#169)
add d263743b0 feat: Introduce Kv table example (#181)
add 76029f7d6 feat: KvWriteBatch wiring in Sender (#184)
add 203093cdb feat: Fix TableLookup so that SchemaId field bytes are not
passed to CompactedRow::from_bytes(), these fields can be skipped as current
rust client implementation does not check schema and already passes row_type
(#190)
add 2f3269d2c feat: Arrow serialization for decimal and temporal types
(#196)
add ed9bca678 chore: invalidate leader info on stale metadata error when
handling fetch response (#189)
add e2e0c22ab test: Kv Table Integration tests (#192)
add add9dd72e test: add it test for put & get kv for all supported
datatypes (#204)
add eda19e223 feat: introduce priority queue for downloading remote
segments (#187)
add d695cb803 feat: Implement Admin APIs for partitioning (#208)
add 8406db0ee chore: add more info for RecordBatches (#211)
add 9408a03ef feat: Support Arrow append operations for decimals, temporal
types in Python (#206)
add 54ef268e1 chore: introduce new with capacity to align generic row with
java side (#212)
add 24c46340f test: add it for produce & scan log for all supported
datatypes (#205)
add bf72035a3 chore: introduce SecurityTokenManager to update token in the
background (#213)
add c80d0aa25 chore: Add blocking poll into python bindings (#154)
add bc7efea50 chore: Introduce PartitionGetter and Partition utils (#214)
add 9371dcc31 [chore] Implement is_auto_partitioned method in table.rs
(#48)
add 0fe410e16 chore: minor fix for rust code (#218)
add 06b30c2a7 chore: Fix async fn panic in CancellationSafeFuture when
future completes
add 9ccf59822 chore: support estimated_size_in_bytes for write batch (#219)
add 2db8982a1 feat: support scan from oss (#217)
add 80ac6fd47 feat: Implement partitioning in Upsert / Lookup (#220)
add 9a6157613 feat: support produce partitioned table (#228)
add b7d511dc7 feat: support list offset for partitioned table (#229)
add 17ba9d122 feat: support list partition offset in cpp binding (#231)
add da22ac85d feat: introduce scan record batch in cpp (#230)
add 21585a568 chore: make Config#bootstrap_server required (#233)
add b399e8e49 chore: accept Into<String> to improve api usage (#234)
add 9231fb4b2 feat: add table partition scanning (#222)
add becde5511 feat: support subscribe partition in cpp binding (#236)
add 2ad9dfe3d chore: Reject table scan for INDEXED format or KV table
(#238)
add f7fb74164 feat: introduce kv tables support in python (#239)
add a084659ac feat: Support different poll methods (#246)
add 63683f5d5 chore: Change upsert and delete to use read only self
reference by using mutex to guard mutable encoders (#247)
add 60b86d72e chore: refator to builder pattern to create log scanner for
CPP (#249)
add 4ed23ff72 chore: rename subscribe_batch to subscribe_buckets (#255)
add b4836474b feat: Support drop_table, partitions and offsets methods in
python bindings (#150)
add 28cd8b0c1 feat: support unsubscribe partition (#257)
add 024c1d146 feat: introduce list partitions in cpp binding (#260)
add 40f13b182 chore: python binding cleanup and bit of refactor (#264)
add 5a334bcc0 chore: Fire-and-forget behaviour for effecient batching
(#258)
add 6ca3bd7b7 chore: introduce deny to check licenses (#267)
add 9202964fa ci: Fix unstable poll_batches (#272)
add b677a6b4b chore: remove async from queueing while writing (#271)
add f0a740e9f feat: Add unsubscribe_partition to python bindings (#277)
add b05a497be build: add how to release doc (#268)
add e9e3db4fc feat: support temporal types in CPP (#266)
add c68ef0322 feat: support decimals in cpp binding (#265)
add ac28f8ee5 feat: Add subscribe_partition_buckets method and partitions
support (#273)
add a056cfd05 chore: remove async for upsert/delete/append in python (#280)
add 6e7aa7c12 feat: support database-level ops in python (#279)
add db996f870 chore: introduce getters in CPP Datum (#281)
add 1c0b97ae8 feat: introduce database level ops for cpp bindings (#286)
add ecb12288d doc: introduce how to verify a release document (#282)
add f3a42f1d9 chore: cleanup and fix partial update in python (#292)
add d44898ecf feat: support kv tables in CPP (#288)
add 02fc41171 feat: Partitioned KV tables python example (#290)
add 219c01683 doc: add python docs and API reference (#291)
add f51691194 doc: Add documentation for rust (#242)
add 9c0776919 feat: support projection by names in CPP (#294)
add de88bbf7e chore: Builder pattern, cleanup, consistent API (#296)
add ef5f60044 chore: refacotr config for CPP and connect -> create in cpp
binding(#298)
add 309d6ea8b chore: Verify API consistent across clients (#302)
add 2865891c0 chore: align DataLakeFormat parsing with lake format config
option (#306)
add 7ec82a549 feat: add unsubscribe to all clients (#305)
add 110690c60 chore: Fix issue where FixedSizedBinary type cannot be build
in arrow (#304)
add 80d903f0b chore: remove LATEST_OFFSET which isn't handle by server
(#312)
add 815596db9 chore: allow propagating hostname as raw bootstrap address
(#307)
add bf20af924 [docs] introduce client doc website (#300)
add 6adf7fee6 chore: cleanup after docs review (#313)
add 32347c743 chore: Fix API error not being propagated on python side.
(#340)
add e1ec84216 chore: added Default Implementations for Missing Types (#326)
add 5333e45c6 chore: default cpp builds to release mode (#345)
add c9e72e649 doc: Add missed API documentation update (#337)
add 919e218fb chore: added unit test cases and throw an exception when any
field doesn't exist on RowType (#310)
add 1720ca046 chore: avoid data copy in CPP bindings (#330)
add 9eadba8b4 test: introduce python integration tests (#341)
add 56d5ca1af chore: Fix issue where interleaving non-Pk column with PK
columns cause lookup panic (#346)
add bb685325d chore: add API reference for CustomProperty (#336)
add 11299f2ce chore: add missing ChangeType enum and doc in C++. Add test
coverage for ChangeType in integration test. (#334)
add 70160fd09 chore: fix sparse to dense representation for CPP lookup
(#348)
add 74c924156 chore: add CI for documentation. Minor improvement and
organisation of website (#350)
add f79a9bd47 chore: update docs after opaque types CPP rework (#349)
add cb4a9b306 chore: make RowView shared_ptr (#353)
add eeb5200a7 chore: Scan results returned per bucket python/cpp (#351)
add 0f4556061 chore: introduce c++ integration test (#352)
add 58e9de57c chore: add notes on lake snapshot (#359)
add 60d3f41e6 chore: introduce max poll records config option (#355)
add 30a8bae77 chore: fix broken link and version mismatch in README (#364)
add d1d832381 chore: fix IT failure from additional table properties (#368)
add 6fd0ab205 chore: rename BucketView to BucketRecords (#370)
add 48624420c feat: Add round robin bucket assigner (#360)
add 81b06aed4 chore: Fix panic / crashes in Rust and C++ (#365)
add 7eb86a70d chore: make batch timeout configurable (#371)
add bb5bdf39f perf: introduce streaming download for file download (#381)
add 39bc2094a feat: Add get_server_nodes to Admin (#363)
add 1f4ff05eb feat: support sasl/plain auth (#375)
add 99d662135 chore:fix test_get_server_nodes to use shared cluster (#392)
add e3e9e4e1e [doc] Update API Ref following SASL / NoKeyAssigner (#396)
add 7bb905d1f [doc] Update doc after rust / c++ panic fixes (#395)
add c100ee375 chore: Add missing python type stubs (#400)
add 20072070a docs: add cpp build guides with examples (#376)
add 316d1a052 chore: update dependency list for release 0.1.0
add eb6003607 Bump version to 0.2.0
add 0ea4e071d ci: update verify tag version
add 7818f020e chore: update rust docs (#416)
add 1fefc8da9 chore: error handling fix CPP, for pointer returning methods
(#409)
add 0e86cc37e ci: fix ci build wheel issue for python (#419)
add b9944eb31 chore: fix mut schema builder public api (#420)
add 2f0f517d9 [doc] Setup workflow for doc publish (#414)
add 8ba776278 doc: update create a release doc (#421)
add b953ab193 feat: Add getter/setter property for
writer_bucket_no_key_assigner config in python (#397)
add 8fdccce0d chore: update testing fluss image to 0.9.0 (#426)
add f2b7d7fa6 chore: Remove config duplication in examples (#427)
add 3ddbebeff ci: parallelize cpp integration tests (#434)
add 036fac02b chore: pre-size Arrow builders and recommend jemalloc for
write path (#430)
add e3316f6a1 ci: parallelize python integration tests (#435)
add 1bf6d96b4 ci: check tablet server availabitility (#437)
add 89e77ba05 chore: refactor to typed Column Writers (#440)
add 520c842b4 feat(python): add get_primary_keys() method to Schema class
(#436)
add 0fe3978a6 chore: added is_retriable() to FlussError (#422)
add 45be5c1ad feat: allow configuring scanner fetch parameters (#417)
add 7413fce5a [client] Add LookupResult::to_record_batch() (#411)
add ce67b9fad feat: introduce idempotent writes (#404)
add 5f1d86ef9 chore: no-op .asf.yaml change to attempt trigger gh page
setup
add 007244e27 troubeshooting test commit
add 7d8ab3d82 INFRA-27705 - infrastructure test commit
add fd2de539d INFRA-27705 - remove test label
add a106cb6f5 doc: optimize pyfluss description in pypi (#439)
add c5cddd9e7 Revert "Bump version to 0.2.0"
add 7b9a400da [doc] Update fluss-rust readme markdown (#415)
add 05b73f46f chore: Idempotency bug: OOO loop when response is lost but
subsequent batches succeed (#448)
add ff98cc7af chore: added check to get_admin() before creating new admin
(#369)
add ffa14b205 chore: make get admin sync (#450)
add 5a230cb7c chore: update dependency list for release 0.1.0
add bcea56689 Bump version to 0.2.0
add aed85b755 feat: Add array data type support (#433)
add f297f2c7e [BUG] Fix possible TOCTOU race between leader discovery and
server lookup in Lookuper (#451)
add da7b026d6 [TASK-470] Optimize null append in Arrow builder (#471)
add b2f732619 chore: fix annoying python CI/CD errors due to unsuported
action (#473)
add 8957671c1 feat: [TASK-315] Proto + RPC for LimitScan (#472)
add 0010433ee ci: fix release rust issue
add 037d0a91e ci: pin pypi publish action to ASF-approved SHA
add 4de077845 ci: improve read me for python
add 7e122e49c feat(iceberg): add IcebergBinaryRowWriter (#366)
add 0f7cfc136 fix: add missing write_array impl to IcebergBinaryRowWriter
(#477)
add 6c3c4b539 chore: improve cargo cache (#478)
add 8fa67f6cd fix: upgrade testcontainers to 0.27.2 to resolve CVEs (#482)
add 1d97a1010 chore: skip duplicate pyfluss build in Python CI (#483)
add cbe878f17 feat: add async 'for' loop support to LogScanner (#424)
(#438)
add a36bf1be3 [test][infra] Unify IT infrastructure for all clients (#476)
add 411b1dc79 fix python 3.11 bug in tests with async wait_for (#488)
add d9b5358dd chore: fix docusaurus (#486)
add 1da2c108d [ci] use swatinem/rust-cache (#485)
add e43d35a09 feat: Add array data type support for Python (#474)
add 82d08bc0d [ci] Upgrade checkout@v4 to v6 and setup-python@v5 to v6
(#491)
add b01930f0c feat: Byte-sized cap instead of hard one for ArrowWriter
(#443)
add d1e601509 feat: Elixir bindings initial PR (#452)
add ce1d440fd [ci/cd] fix python tests with more strict scoping (#494)
add 5e13f46fc feat: support batch lookup (#216)
add a7c401337 [ci] optimize check_license_and_formatting (#503)
add 16c895851 [ci] cache C++ build with sccache (#505)
add e6f95e62c [rust][chore] fix unknow error code lost for forward
compatibility path (#509)
add 7b4d711ab feat: [rust] prefix lookup support (#500)
add 61db34e66 chore: use the same cache in rust integration tests (#506)
add afce91246 [c++] Add c++ support for Array data type (#501)
add 746391317 build(deps): bump actions/download-artifact from 4 to 8
(#408)
add 035fcfa4b feat: [metrics] Create metrics framework and add connection
metrics (#407)
add f6517e800 feat: Basic CI/CD for elixir (#497)
add cb5908de0 feat: [elixir] fine-grained errors (#507)
add 1257cc81f feat: (Python) Add async context manager (#487)
add 4888f49ef chore: regenerate Cargo.lock for declared metrics deps (#518)
add 003828763 chore: bump rand from 0.9.2 to 0.9.3 (#512)
add 93c28cc15 chore: bump actions/upload-artifact from 4 to 7 (#521)
add 142f9ccb2 chore: bump rustls-webpki from 0.103.10 to 0.103.13 (#513)
add 273c238c7 fix: [bindings] map RpcError to NetworkException for Java
parity (#519)
add f433709a9 feat: make LogScanner poll methods async to prevent event
loop blocking (#495)
add cb367e83d chore: fix context_manager in python for async handling
(#527)
add 024aebb41 feat: Add nullability support in python (#522)
add 01c9a221c [rust] lookup decoding schema id (#517)
add 47973d1b1 chore: fix python CI - reduce workers to 2 with loadfile
distribution (#529)
add 2356cf4e0 chore: Add validation for numeric config fields (#449)
add 1ff4eecd0 [c++] Add nullability support for data type in c++ (#525)
add e274bd156 [rust] Support API_VERSION in rust client. (#531)
add d0bea1ebe Support FixedSizeBinary in python (#538)
add b0c54862f [rust][writer] Add DynamicWriteBatchSizeEstimator (#532)
add 55b3e71f2 [tests] Add integration tests for array data type (#523)
add 9704b0c54 [python] Add prefix lookup support in python (#540)
add 2a6f0a44c capture cluster container logs as CI artifact (#542)
add 4a2fdede6 feat: add end-to-end ROW (nested struct) column
serialization support
add 2c1809794 fixes and improvements
add 338b6b8ed feat: Add RecordBatchLogReader for bounded log reading (#446)
add e17e0873f feat: implement MAP data type support
add 5425b9366 fix: close Arrow read-path gaps for MAP
add dbf5f80ee chore: fix main broken due to new clippy useless_conversion
(#548)
add 5f452c879 [metrics] Add scanner fetch and remote download metrics
(#553)
add 29ea5cedb docs: add documentation for MAP dtype (#556)
add 32ae530ce [chore] improve ergonomics for MAP dt, docs additions
add 50171d484 [ci] scope rust integration job to test_fluss target only
(#561)
add e0ecf8ba9 [rust] integration tests for MAP dt + restructure ITs for
complex dts (#560)
add 5ef93a8ba [test] Add Rust integration coverage for
RecordBatchLogReader bounded reads. (#559)
add 88f56487a [metrics] Add scanner poll-timing metrics (#555)
add 5a472b24c feat: [metrics] Add database and table labels for scanner
metrics (#565)
add b38859efa [elixir] feat: Extend Fluss.Config with writer tuning
options (#566)
add 087bc9904 [tests] replace fixed tokio::time::sleep workarounds with
wait_for_table_ready helper. (#564)
add 634c603e2 [client] Implement BatchScanner with limit-based scan
add 35a6ec6f4 [client] Fix KV limit-scan decode + enforce limit, support
schema evolution
add 52ac57ab7 [elixir] feat: Extend Fluss.Config with scanner tuning
options (#574)
add 53da6a8cb chore: [ci] Fix rustdoc warning and promote warning to error
in CI (#576)
add 2b0c742f7 [elixir] feat: Extend Fluss.Config with security, SASL and
connect timeout options (#577)
add 5a326c68c [elixir] chore: Add dialyzer and tighten Fluss.Config setter
guards (#582)
add 7b17abca9 [elixir] feat: Add first batch of admin calls (#583)
add aeaaef76e feat: [rust] typed column-vector dispatch (#578)
add dce6509c7 [metrics] Add last_poll_seconds_ago scanner metric (#581)
add fca116766 [rust] Support paimon key encoder. (#579)
add a3c0a7214 [elixir] feat: Add get_database_info admin call (#586)
add c81ac1ed2 [elixir] Optimize CI/CD with proper actions, reusing
compiled deps (#598)
add 01b6e5c39 docs: comprehensive README update (#600)
add 6a97ef792 [python] map and row complex types support (#601)
add 43aeae433 [c++] add prefix lookup (#606)
add 05f29f86b [metrics] Add writer pipeline metrics (#609)
add 61a6593b3 [python] Split examples in Python and enforce executability
in CI for python examples (#610)
add ff5f9ede5 [elixir] feat: Allow comment and custom_properties on
create_database (#597)
add 0f9d26d9f [python] Add stub test to catch pyi drift in CI (#616)
add db1130c84 [python] Limit scan (#613)
add 2bef0f5f6 chore: bump rustler from 0.37.3 to 0.38.0 (#594)
add 75400d51b chore: bump mozilla-actions/sccache-action from 0.0.9 to
0.0.10 (#590)
add 910d6fa47 chore: bump astral-sh/setup-uv from 7.6.0 to 8.2.0 (#591)
add 45ccba039 chore: bump tokio from 1.51.0 to 1.52.3 (#592)
add b0643c2ae [c++] Limit batch scanner (#614)
add f87bb9685 chore: [metrics] Add client metrics and prometheus example
(#617)
add 2f77b041d chore: fix(test-cluster): manage containers via
testcontainers' Docker client so start/stop share one runtime (#624)
add eb05c807f chore: fix tighten test cluster cleanup matching (#627)
add 49849f724 [rust] Sync Fluss 1.x proto definitions and ApiKey registry
(#628)
add 54275a22d [client] Allow bootstrap endpoint with unknown server type
(#622)
add 647aac602 [rust] Add RPC message wrappers for core DB/table operations
add 0bf2a1a44 tighten pub visibility for protos
add 4dc9ecca0 feat: [c++] Add MAP/ROW types, unify complex types under
Value handle (#611)
add f0bc5620d [rust] Replace raw i64/i32 with TableId/PartitionId/BucketId
type aliases in write path (#635)
add c1903d502 [rust] Add RPC message wrappers for extended operations
(#630)
add b8585ebc4 [elixir] feat: Add get_table_info admin call (#640)
add f8e33d567 [rust] Add Fluss 1.x protocol support to the admin client
(#631)
add 676d38fc5 [feat] Support subscribing to primary-key table changelog
(#639)
add 39f885df1 [elixir] ci: bump OTP to 28.5.0.2 (#646)
add c70a4a6cf [elixir] feat: Support full table descriptor options in
create_table (#647)
add 89eafb9d6 [FIP-40] Import fluss-rust under fluss-rust/ with preserved
history
add 400e132bf [FIP-40] Adapt imported fluss-rust to the monorepo (proto,
CI, docs, release)
No new revisions were added by this update.
Summary of changes:
.github/actions/verify-tag-version/action.yml | 41 +
.github/dependabot.yml | 30 +
.github/release.yml | 42 +
.github/workflows/ci.yaml | 2 +
.github/workflows/client-integration.yml | 416 ++
.github/workflows/license-check.yml | 12 +-
.github/workflows/python-release.yml | 180 +
.github/workflows/rust-build-and-test.yml | 82 +
.github/workflows/{ci.yaml => rust-docs-check.yml} | 62 +-
.github/workflows/rust-license-and-format.yml | 98 +
.github/workflows/rust-release.yml | 60 +
fluss-rust/.cargo/config.toml | 22 +
fluss-rust/.gitignore | 54 +
fluss-rust/.licenserc.yaml | 39 +
fluss-rust/Cargo.lock | 4766 ++++++++++++++++++++
fluss-rust/Cargo.toml | 43 +
fluss-rust/DEPENDENCIES.rust.tsv | 325 ++
fluss-rust/DEVELOPMENT.md | 106 +
fluss-rust/MODULE.bazel | 65 +
fluss-rust/README.md | 328 ++
fluss-rust/bindings/cpp/.bazelrc | 37 +
fluss-rust/bindings/cpp/.clang-format | 21 +
fluss-rust/bindings/cpp/.gitignore | 27 +
fluss-rust/bindings/cpp/BUILD.bazel | 436 ++
fluss-rust/bindings/cpp/CMakeLists.txt | 299 ++
fluss-rust/bindings/cpp/Cargo.toml | 38 +
fluss-rust/bindings/cpp/DEPENDENCIES.rust.tsv | 309 ++
fluss-rust/bindings/cpp/README.md | 42 +
fluss-rust/bindings/cpp/bazel/cpp/BUILD.bazel | 26 +
fluss-rust/bindings/cpp/bazel/cpp/deps.bzl | 349 ++
fluss-rust/bindings/cpp/build.rs | 24 +
fluss-rust/bindings/cpp/ci.sh | 101 +
fluss-rust/bindings/cpp/examples/admin_example.cpp | 122 +
.../cpp/examples/bazel-consumer/build/BUILD.bazel | 25 +
.../cpp/examples/bazel-consumer/build/MODULE.bazel | 39 +
.../cpp/examples/bazel-consumer/build/main.cc | 28 +
.../cpp/examples/bazel-consumer/system/BUILD.bazel | 25 +
.../examples/bazel-consumer/system/MODULE.bazel | 44 +
.../cpp/examples/bazel-consumer/system/main.cc | 27 +
fluss-rust/bindings/cpp/examples/example.cpp | 790 ++++
.../bindings/cpp/examples/kv_changelog_example.cpp | 130 +
fluss-rust/bindings/cpp/examples/kv_example.cpp | 537 +++
fluss-rust/bindings/cpp/include/fluss.hpp | 1844 ++++++++
fluss-rust/bindings/cpp/scripts/ensure_protoc.sh | 277 ++
fluss-rust/bindings/cpp/src/admin.cpp | 403 ++
fluss-rust/bindings/cpp/src/connection.cpp | 88 +
fluss-rust/bindings/cpp/src/ffi_converter.hpp | 414 ++
fluss-rust/bindings/cpp/src/lib.rs | 3987 ++++++++++++++++
fluss-rust/bindings/cpp/src/table.cpp | 1918 ++++++++
fluss-rust/bindings/cpp/src/type_lowering.hpp | 144 +
fluss-rust/bindings/cpp/src/types.rs | 740 +++
fluss-rust/bindings/cpp/test/test_admin.cpp | 356 ++
.../bindings/cpp/test/test_ffi_converter.cpp | 240 +
fluss-rust/bindings/cpp/test/test_kv_changelog.cpp | 182 +
fluss-rust/bindings/cpp/test/test_kv_table.cpp | 1890 ++++++++
fluss-rust/bindings/cpp/test/test_log_table.cpp | 1964 ++++++++
fluss-rust/bindings/cpp/test/test_main.cpp | 35 +
fluss-rust/bindings/cpp/test/test_sasl_auth.cpp | 124 +
fluss-rust/bindings/cpp/test/test_utils.h | 239 +
fluss-rust/bindings/elixir/.formatter.exs | 20 +
fluss-rust/bindings/elixir/.gitignore | 10 +
fluss-rust/bindings/elixir/README.md | 60 +
fluss-rust/bindings/elixir/lib/fluss.ex | 52 +
fluss-rust/bindings/elixir/lib/fluss/admin.ex | 211 +
.../bindings/elixir/lib/fluss/append_writer.ex | 75 +
fluss-rust/bindings/elixir/lib/fluss/config.ex | 243 +
fluss-rust/bindings/elixir/lib/fluss/connection.ex | 51 +
.../elixir/lib/fluss/database_descriptor.ex | 67 +
.../bindings/elixir/lib/fluss/database_info.ex | 37 +
fluss-rust/bindings/elixir/lib/fluss/error.ex | 127 +
.../bindings/elixir/lib/fluss/log_scanner.ex | 97 +
fluss-rust/bindings/elixir/lib/fluss/native.ex | 99 +
fluss-rust/bindings/elixir/lib/fluss/schema.ex | 74 +
.../bindings/elixir/lib/fluss/schema_info.ex | 33 +
.../bindings/elixir/lib/fluss/server_node.ex | 37 +
fluss-rust/bindings/elixir/lib/fluss/table.ex | 48 +
.../bindings/elixir/lib/fluss/table_descriptor.ex | 100 +
fluss-rust/bindings/elixir/lib/fluss/table_info.ex | 96 +
.../bindings/elixir/lib/fluss/write_handle.ex | 44 +
fluss-rust/bindings/elixir/mix.exs | 83 +
fluss-rust/bindings/elixir/mix.lock | 15 +
.../bindings/elixir/native/fluss_nif/Cargo.toml | 34 +
.../bindings/elixir/native/fluss_nif/src/admin.rs | 349 ++
.../elixir/native/fluss_nif/src/append_writer.rs | 69 +
.../elixir/native/fluss_nif/src/async_nif.rs | 93 +
.../bindings/elixir/native/fluss_nif/src/atoms.rs | 224 +
.../bindings/elixir/native/fluss_nif/src/config.rs | 147 +
.../elixir/native/fluss_nif/src/connection.rs | 43 +
.../bindings/elixir/native/fluss_nif/src/lib.rs | 47 +
.../elixir/native/fluss_nif/src/log_scanner.rs | 166 +
.../elixir/native/fluss_nif/src/row_convert.rs | 267 ++
.../bindings/elixir/native/fluss_nif/src/schema.rs | 173 +
.../bindings/elixir/native/fluss_nif/src/table.rs | 89 +
.../elixir/native/fluss_nif/src/write_handle.rs | 47 +
fluss-rust/bindings/elixir/test/config_test.exs | 236 +
.../elixir/test/database_descriptor_test.exs | 169 +
fluss-rust/bindings/elixir/test/error_test.exs | 87 +
fluss-rust/bindings/elixir/test/fluss_test.exs | 66 +
.../elixir/test/integration/admin_test.exs | 468 ++
.../elixir/test/integration/log_table_test.exs | 372 ++
fluss-rust/bindings/elixir/test/support/cluster.ex | 152 +
.../elixir/test/support/integration_case.ex | 43 +
.../bindings/elixir/test/table_descriptor_test.exs | 86 +
fluss-rust/bindings/elixir/test/test_helper.exs | 27 +
fluss-rust/bindings/python/Cargo.toml | 40 +
fluss-rust/bindings/python/DEPENDENCIES.rust.tsv | 310 ++
fluss-rust/bindings/python/DEVELOPMENT.md | 135 +
fluss-rust/bindings/python/PYPI_README.md | 28 +
fluss-rust/bindings/python/README.md | 21 +
.../bindings/python/example/complex_types.py | 238 +
fluss-rust/bindings/python/example/kv_changelog.py | 103 +
fluss-rust/bindings/python/example/log_table.py | 430 ++
.../python/example/partitioned_kv_table.py | 138 +
.../bindings/python/example/partitioned_table.py | 176 +
fluss-rust/bindings/python/example/pk_table.py | 240 +
fluss-rust/bindings/python/fluss/__init__.py | 20 +
fluss-rust/bindings/python/fluss/__init__.pyi | 1291 ++++++
.../bindings/python/fluss/py.typed | 0
fluss-rust/bindings/python/pyproject.toml | 105 +
fluss-rust/bindings/python/src/admin.rs | 633 +++
fluss-rust/bindings/python/src/config.rs | 535 +++
fluss-rust/bindings/python/src/connection.rs | 150 +
fluss-rust/bindings/python/src/error.rs | 276 ++
fluss-rust/bindings/python/src/lib.rs | 145 +
fluss-rust/bindings/python/src/lookup.rs | 214 +
fluss-rust/bindings/python/src/metadata.rs | 767 ++++
fluss-rust/bindings/python/src/table.rs | 2969 ++++++++++++
fluss-rust/bindings/python/src/upsert.rs | 161 +
fluss-rust/bindings/python/src/utils.rs | 179 +
fluss-rust/bindings/python/src/write_handle.rs | 78 +
fluss-rust/bindings/python/stubtest-allowlist.txt | 27 +
fluss-rust/bindings/python/test/conftest.py | 511 +++
fluss-rust/bindings/python/test/test_admin.py | 319 ++
.../bindings/python/test/test_batch_scanner.py | 221 +
.../bindings/python/test/test_context_manager.py | 116 +
fluss-rust/bindings/python/test/test_examples.py | 66 +
.../bindings/python/test/test_kv_changelog.py | 112 +
fluss-rust/bindings/python/test/test_kv_table.py | 825 ++++
fluss-rust/bindings/python/test/test_log_table.py | 1627 +++++++
fluss-rust/bindings/python/test/test_sasl_auth.py | 108 +
fluss-rust/bindings/python/test/test_schema.py | 150 +
fluss-rust/copyright.txt | 17 +
fluss-rust/crates/examples/Cargo.toml | 62 +
fluss-rust/crates/examples/DEPENDENCIES.rust.tsv | 300 ++
.../crates/examples/src/example_kv_changelog.rs | 96 +
fluss-rust/crates/examples/src/example_kv_table.rs | 118 +
.../examples/src/example_partitioned_kv_table.rs | 150 +
.../src/example_partitioned_prefix_lookup.rs | 144 +
.../crates/examples/src/example_prefix_lookup.rs | 120 +
.../examples/src/example_prometheus_metrics.rs | 138 +
fluss-rust/crates/examples/src/example_table.rs | 97 +
fluss-rust/crates/fluss-test-cluster/Cargo.toml | 36 +
fluss-rust/crates/fluss-test-cluster/build.rs | 32 +
fluss-rust/crates/fluss-test-cluster/src/lib.rs | 663 +++
fluss-rust/crates/fluss-test-cluster/src/main.rs | 103 +
.../crates/fluss-test-cluster/test-images.env | 4 +
fluss-rust/crates/fluss/Cargo.toml | 91 +
fluss-rust/crates/fluss/DEPENDENCIES.rust.tsv | 297 ++
fluss-rust/crates/fluss/README.md | 105 +
fluss-rust/crates/fluss/build.rs | 42 +
fluss-rust/crates/fluss/src/bucketing/mod.rs | 265 ++
fluss-rust/crates/fluss/src/client/admin.rs | 883 ++++
fluss-rust/crates/fluss/src/client/connection.rs | 187 +
fluss-rust/crates/fluss/src/client/credentials.rs | 437 ++
.../fluss/src/client/lookup/lookup_client.rs | 250 +
.../crates/fluss/src/client/lookup/lookup_query.rs | 130 +
.../crates/fluss/src/client/lookup/lookup_queue.rs | 148 +
.../fluss/src/client/lookup/lookup_sender.rs | 711 +++
fluss-rust/crates/fluss/src/client/lookup/mod.rs | 39 +
fluss-rust/crates/fluss/src/client/metadata.rs | 370 ++
fluss-rust/crates/fluss/src/client/mod.rs | 34 +
.../crates/fluss/src/client/schema_getter.rs | 76 +
fluss-rust/crates/fluss/src/client/table/append.rs | 157 +
.../crates/fluss/src/client/table/batch_scanner.rs | 836 ++++
.../fluss/src/client/table/log_fetch_buffer.rs | 1044 +++++
fluss-rust/crates/fluss/src/client/table/lookup.rs | 822 ++++
fluss-rust/crates/fluss/src/client/table/mod.rs | 167 +
.../fluss/src/client/table/partition_getter.rs | 199 +
fluss-rust/crates/fluss/src/client/table/reader.rs | 701 +++
.../crates/fluss/src/client/table/remote_log.rs | 1343 ++++++
.../crates/fluss/src/client/table/scanner.rs | 3191 +++++++++++++
fluss-rust/crates/fluss/src/client/table/upsert.rs | 569 +++
.../crates/fluss/src/client/write/accumulator.rs | 1789 ++++++++
fluss-rust/crates/fluss/src/client/write/batch.rs | 917 ++++
.../crates/fluss/src/client/write/broadcast.rs | 133 +
.../fluss/src/client/write/bucket_assigner.rs | 260 ++
.../fluss/src/client/write/dynamic_batch_size.rs | 147 +
.../crates/fluss/src/client/write/idempotence.rs | 767 ++++
fluss-rust/crates/fluss/src/client/write/mod.rs | 265 ++
fluss-rust/crates/fluss/src/client/write/sender.rs | 1802 ++++++++
.../crates/fluss/src/client/write/write_format.rs | 66 +
.../crates/fluss/src/client/write/writer_client.rs | 247 +
fluss-rust/crates/fluss/src/cluster/cluster.rs | 549 +++
fluss-rust/crates/fluss/src/cluster/mod.rs | 148 +
.../fluss/src/compression/arrow_compression.rs | 264 ++
.../arrow_compression_ratio_estimator.rs | 105 +
fluss-rust/crates/fluss/src/compression/mod.rs | 22 +
fluss-rust/crates/fluss/src/config.rs | 683 +++
fluss-rust/crates/fluss/src/error.rs | 250 +
fluss-rust/crates/fluss/src/io/file_io.rs | 157 +
fluss-rust/crates/fluss/src/io/mod.rs | 44 +
fluss-rust/crates/fluss/src/io/storage.rs | 108 +
fluss-rust/crates/fluss/src/io/storage_fs.rs | 30 +
fluss-rust/crates/fluss/src/io/storage_memory.rs | 24 +
fluss-rust/crates/fluss/src/io/storage_oss.rs | 45 +
fluss-rust/crates/fluss/src/io/storage_s3.rs | 48 +
fluss-rust/crates/fluss/src/lib.rs | 155 +
fluss-rust/crates/fluss/src/metadata/acl.rs | 343 ++
.../crates/fluss/src/metadata/cluster_health.rs | 109 +
fluss-rust/crates/fluss/src/metadata/config.rs | 151 +
.../crates/fluss/src/metadata/data_lake_format.rs | 64 +
fluss-rust/crates/fluss/src/metadata/database.rs | 258 ++
fluss-rust/crates/fluss/src/metadata/datatype.rs | 1992 ++++++++
fluss-rust/crates/fluss/src/metadata/goal_type.rs | 68 +
fluss-rust/crates/fluss/src/metadata/json_serde.rs | 1154 +++++
.../crates/fluss/src/metadata/kv_snapshot.rs | 171 +
.../crates/fluss/src/metadata/kv_snapshot_lease.rs | 119 +
.../crates/fluss/src/metadata/lake_snapshot.rs | 83 +
fluss-rust/crates/fluss/src/metadata/mod.rs | 60 +
fluss-rust/crates/fluss/src/metadata/partition.rs | 476 ++
.../crates/fluss/src/metadata/producer_offsets.rs | 141 +
fluss-rust/crates/fluss/src/metadata/rebalance.rs | 187 +
.../fluss/src/metadata/register_producer_result.rs | 66 +
fluss-rust/crates/fluss/src/metadata/remote_log.rs | 59 +
.../crates/fluss/src/metadata/schema_util.rs | 204 +
fluss-rust/crates/fluss/src/metadata/server_tag.rs | 61 +
fluss-rust/crates/fluss/src/metadata/table.rs | 1675 +++++++
.../crates/fluss/src/metadata/table_change.rs | 243 +
.../crates/fluss/src/metadata/table_stats.rs | 140 +
fluss-rust/crates/fluss/src/metrics.rs | 875 ++++
fluss-rust/crates/fluss/src/record/arrow.rs | 2606 +++++++++++
fluss-rust/crates/fluss/src/record/error.rs | 27 +
fluss-rust/crates/fluss/src/record/kv/kv_record.rs | 351 ++
.../crates/fluss/src/record/kv/kv_record_batch.rs | 456 ++
.../fluss/src/record/kv/kv_record_batch_builder.rs | 582 +++
.../fluss/src/record/kv/kv_record_read_context.rs | 165 +
fluss-rust/crates/fluss/src/record/kv/mod.rs | 44 +
.../crates/fluss/src/record/kv/read_context.rs | 45 +
fluss-rust/crates/fluss/src/record/kv/test_util.rs | 50 +
.../fluss/src/record/kv/value_record_batch.rs | 188 +
fluss-rust/crates/fluss/src/record/mod.rs | 327 ++
.../crates/fluss/src/row/binary/binary_writer.rs | 318 ++
.../src/row/binary/iceberg_binary_row_writer.rs | 564 +++
fluss-rust/crates/fluss/src/row/binary/mod.rs | 30 +
fluss-rust/crates/fluss/src/row/binary_array.rs | 1310 ++++++
fluss-rust/crates/fluss/src/row/binary_map.rs | 760 ++++
fluss-rust/crates/fluss/src/row/column.rs | 736 +++
fluss-rust/crates/fluss/src/row/column_vector.rs | 650 +++
fluss-rust/crates/fluss/src/row/column_writer.rs | 1613 +++++++
fluss-rust/crates/fluss/src/row/columnar.rs | 364 ++
.../src/row/compacted/compacted_key_writer.rs | 123 +
.../fluss/src/row/compacted/compacted_row.rs | 626 +++
.../src/row/compacted/compacted_row_reader.rs | 569 +++
.../src/row/compacted/compacted_row_writer.rs | 277 ++
fluss-rust/crates/fluss/src/row/compacted/mod.rs | 30 +
fluss-rust/crates/fluss/src/row/datum.rs | 1595 +++++++
fluss-rust/crates/fluss/src/row/decimal.rs | 472 ++
.../fluss/src/row/encode/compacted_key_encoder.rs | 556 +++
.../fluss/src/row/encode/compacted_row_encoder.rs | 77 +
fluss-rust/crates/fluss/src/row/encode/mod.rs | 184 +
.../fluss/src/row/encode/paimon_key_encoder.rs | 162 +
fluss-rust/crates/fluss/src/row/field_getter.rs | 315 ++
.../crates/fluss/src/row/fixed_schema_decoder.rs | 196 +
fluss-rust/crates/fluss/src/row/lookup_row.rs | 133 +
fluss-rust/crates/fluss/src/row/mod.rs | 438 ++
fluss-rust/crates/fluss/src/row/paimon/mod.rs | 20 +
.../src/row/paimon/paimon_binary_row_writer.rs | 552 +++
fluss-rust/crates/fluss/src/row/projected_row.rs | 287 ++
fluss-rust/crates/fluss/src/row/row_decoder.rs | 137 +
fluss-rust/crates/fluss/src/row/view.rs | 672 +++
fluss-rust/crates/fluss/src/rpc/api_key.rs | 336 ++
fluss-rust/crates/fluss/src/rpc/api_version.rs | 79 +
fluss-rust/crates/fluss/src/rpc/convert.rs | 96 +
fluss-rust/crates/fluss/src/rpc/error.rs | 54 +
fluss-rust/crates/fluss/src/rpc/fluss_api_error.rs | 510 +++
fluss-rust/crates/fluss/src/rpc/frame.rs | 110 +
.../src/rpc/message/acquire_kv_snapshot_lease.rs | 56 +
.../crates/fluss/src/rpc/message/add_server_tag.rs | 48 +
.../fluss/src/rpc/message/alter_cluster_configs.rs | 47 +
.../crates/fluss/src/rpc/message/alter_database.rs | 55 +
.../crates/fluss/src/rpc/message/alter_table.rs | 62 +
.../crates/fluss/src/rpc/message/api_versions.rs | 50 +
.../crates/fluss/src/rpc/message/authenticate.rs | 84 +
.../fluss/src/rpc/message/cancel_rebalance.rs | 46 +
.../crates/fluss/src/rpc/message/create_acls.rs | 47 +
.../fluss/src/rpc/message/create_database.rs | 65 +
.../fluss/src/rpc/message/create_partition.rs | 57 +
.../crates/fluss/src/rpc/message/create_table.rs | 60 +
.../fluss/src/rpc/message/database_exists.rs | 49 +
.../src/rpc/message/delete_producer_offsets.rs | 46 +
.../src/rpc/message/describe_cluster_configs.rs | 44 +
.../crates/fluss/src/rpc/message/drop_acls.rs | 47 +
.../crates/fluss/src/rpc/message/drop_database.rs | 51 +
.../src/rpc/message/drop_kv_snapshot_lease.rs | 46 +
.../crates/fluss/src/rpc/message/drop_partition.rs | 56 +
.../crates/fluss/src/rpc/message/drop_table.rs | 55 +
fluss-rust/crates/fluss/src/rpc/message/fetch.rs | 55 +
.../fluss/src/rpc/message/get_cluster_health.rs | 44 +
.../fluss/src/rpc/message/get_database_info.rs | 49 +
.../src/rpc/message/get_kv_snapshot_metadata.rs | 54 +
.../fluss/src/rpc/message/get_lake_snapshot.rs | 50 +
.../src/rpc/message/get_latest_kv_snapshots.rs | 49 +
.../src/rpc/message/get_latest_lake_snapshot.rs | 55 +
.../fluss/src/rpc/message/get_producer_offsets.rs | 46 +
.../fluss/src/rpc/message/get_security_token.rs | 51 +
.../crates/fluss/src/rpc/message/get_table.rs | 54 +
.../fluss/src/rpc/message/get_table_schema.rs | 55 +
.../fluss/src/rpc/message/get_table_stats.rs | 53 +
fluss-rust/crates/fluss/src/rpc/message/header.rs | 82 +
.../crates/fluss/src/rpc/message/init_writer.rs | 47 +
.../crates/fluss/src/rpc/message/limit_scan.rs | 60 +
.../crates/fluss/src/rpc/message/list_acls.rs | 47 +
.../src/rpc/message/list_database_summaries.rs | 45 +
.../crates/fluss/src/rpc/message/list_databases.rs | 49 +
.../fluss/src/rpc/message/list_kv_snapshots.rs | 47 +
.../crates/fluss/src/rpc/message/list_offsets.rs | 152 +
.../fluss/src/rpc/message/list_partition_infos.rs | 60 +
.../src/rpc/message/list_rebalance_progress.rs | 46 +
.../src/rpc/message/list_remote_log_manifests.rs | 47 +
.../crates/fluss/src/rpc/message/list_tables.rs | 52 +
fluss-rust/crates/fluss/src/rpc/message/lookup.rs | 71 +
fluss-rust/crates/fluss/src/rpc/message/mod.rs | 187 +
.../crates/fluss/src/rpc/message/prefix_lookup.rs | 68 +
.../crates/fluss/src/rpc/message/produce_log.rs | 68 +
fluss-rust/crates/fluss/src/rpc/message/put_kv.rs | 70 +
.../crates/fluss/src/rpc/message/rebalance.rs | 47 +
.../src/rpc/message/register_producer_offsets.rs | 56 +
.../src/rpc/message/release_kv_snapshot_lease.rs | 48 +
.../fluss/src/rpc/message/remove_server_tag.rs | 48 +
fluss-rust/crates/fluss/src/rpc/message/scan_kv.rs | 57 +
.../crates/fluss/src/rpc/message/table_exists.rs | 53 +
.../fluss/src/rpc/message/update_metadata.rs | 71 +
fluss-rust/crates/fluss/src/rpc/mod.rs | 32 +
.../crates/fluss/src/rpc/server_connection.rs | 1316 ++++++
fluss-rust/crates/fluss/src/rpc/transport.rs | 83 +
fluss-rust/crates/fluss/src/test_utils.rs | 180 +
fluss-rust/crates/fluss/src/util/mod.rs | 239 +
fluss-rust/crates/fluss/src/util/murmur_hash.rs | 222 +
fluss-rust/crates/fluss/src/util/partition.rs | 532 +++
fluss-rust/crates/fluss/src/util/varint.rs | 498 ++
fluss-rust/crates/fluss/tests/integration/admin.rs | 601 +++
.../fluss/tests/integration/batch_scanner.rs | 423 ++
.../fluss/tests/integration/fluss_cluster.rs | 18 +
.../crates/fluss/tests/integration/kv_changelog.rs | 170 +
.../crates/fluss/tests/integration/kv_table.rs | 2050 +++++++++
.../crates/fluss/tests/integration/log_table.rs | 1952 ++++++++
.../tests/integration/record_batch_log_reader.rs | 524 +++
.../crates/fluss/tests/integration/sasl_auth.rs | 147 +
.../fluss/tests/integration/table_remote_scan.rs | 124 +
fluss-rust/crates/fluss/tests/integration/utils.rs | 499 ++
fluss-rust/crates/fluss/tests/test_fluss.rs | 35 +
fluss-rust/deny.toml | 36 +
fluss-rust/docs/cpp-bazel-usage.md | 291 ++
fluss-rust/docs/cpp-cmake-usage.md | 129 +
fluss-rust/justfile | 28 +
fluss-rust/rust-toolchain.toml | 20 +
fluss-rust/rustfmt.toml | 19 +
fluss-rust/scripts/bump-version.sh | 54 +
fluss-rust/scripts/constants.py | 45 +
fluss-rust/scripts/dependencies.py | 96 +
fluss-rust/scripts/release.sh | 67 +
fluss-rust/scripts/vendor-proto.sh | 46 +
fluss-rust/website/babel.config.js | 3 +
.../website/docs/developer-guide/contributing.md | 132 +
fluss-rust/website/docs/index.md | 45 +
fluss-rust/website/docs/release/create-release.md | 445 ++
.../website/docs/release/generate-release-note.md | 10 +
.../docs/release/verifying-a-release-candidate.md | 124 +
fluss-rust/website/docs/user-guide/_category_.json | 4 +
.../website/docs/user-guide/cpp/_category_.json | 4 +
.../website/docs/user-guide/cpp/api-reference.md | 794 ++++
.../website/docs/user-guide/cpp/data-types.md | 332 ++
.../website/docs/user-guide/cpp/error-handling.md | 238 +
.../docs/user-guide/cpp/example/_category_.json | 4 +
.../user-guide/cpp/example/admin-operations.md | 158 +
.../docs/user-guide/cpp/example/configuration.md | 42 +
.../website/docs/user-guide/cpp/example/index.md | 63 +
.../docs/user-guide/cpp/example/log-tables.md | 181 +
.../user-guide/cpp/example/partitioned-tables.md | 179 +
.../docs/user-guide/cpp/example/prefix-lookup.md | 109 +
.../user-guide/cpp/example/primary-key-tables.md | 179 +
.../website/docs/user-guide/cpp/installation.md | 107 +
.../website/docs/user-guide/python/_category_.json | 4 +
.../docs/user-guide/python/api-reference.md | 405 ++
.../website/docs/user-guide/python/data-types.md | 181 +
.../docs/user-guide/python/error-handling.md | 168 +
.../docs/user-guide/python/example/_category_.json | 4 +
.../user-guide/python/example/admin-operations.md | 81 +
.../user-guide/python/example/configuration.md | 49 +
.../docs/user-guide/python/example/index.md | 46 +
.../docs/user-guide/python/example/log-tables.md | 143 +
.../python/example/partitioned-tables.md | 104 +
.../python/example/primary-key-tables.md | 95 +
.../website/docs/user-guide/python/installation.md | 41 +
.../website/docs/user-guide/rust/_category_.json | 4 +
.../website/docs/user-guide/rust/api-reference.md | 651 +++
.../website/docs/user-guide/rust/data-types.md | 179 +
.../website/docs/user-guide/rust/error-handling.md | 241 +
.../docs/user-guide/rust/example/_category_.json | 4 +
.../user-guide/rust/example/admin-operations.md | 122 +
.../docs/user-guide/rust/example/configuration.md | 35 +
.../website/docs/user-guide/rust/example/index.md | 56 +
.../docs/user-guide/rust/example/log-tables.md | 172 +
.../user-guide/rust/example/partitioned-tables.md | 219 +
.../docs/user-guide/rust/example/prefix-lookup.md | 110 +
.../user-guide/rust/example/primary-key-tables.md | 183 +
.../website/docs/user-guide/rust/installation.md | 76 +
fluss-rust/website/docs/user-guide/rust/metrics.md | 179 +
fluss-rust/website/docusaurus.config.ts | 103 +
fluss-rust/website/package.json | 48 +
fluss-rust/website/sidebars.ts | 25 +
fluss-rust/website/src/css/custom.css | 209 +
fluss-rust/website/static/CNAME | 1 +
.../website}/static/img/logo/fluss_favicon.svg | 0
.../website}/static/img/logo/png/colored_logo.png | Bin
.../website}/static/img/logo/svg/colored_logo.svg | 0
.../website/static/img}/release-guide.png | Bin
fluss-rust/website/static/manifest.json | 17 +
fluss-rust/website/tsconfig.json | 6 +
pom.xml | 2 +
website/community/dev/building.md | 38 +-
website/community/dev/ide-setup.md | 9 +
.../community/how-to-contribute/contribute-code.md | 3 +-
.../how-to-release/creating-a-fluss-release.mdx | 25 +
.../community/how-to-release/pre-rc-checklist.md | 38 +
.../how-to-release/release-manager-preparation.md | 22 +
.../how-to-release/verifying-a-fluss-release.md | 32 +
website/docs/apis/client-support-matrix.md | 16 +-
website/docs/apis/cpp-client.md | 70 -
website/docs/apis/cpp/_category_.json | 4 +
website/docs/apis/cpp/api-reference.md | 794 ++++
website/docs/apis/cpp/data-types.md | 332 ++
website/docs/apis/cpp/error-handling.md | 238 +
website/docs/apis/cpp/example/_category_.json | 4 +
website/docs/apis/cpp/example/admin-operations.md | 158 +
website/docs/apis/cpp/example/configuration.md | 42 +
website/docs/apis/cpp/example/index.md | 63 +
website/docs/apis/cpp/example/log-tables.md | 181 +
.../docs/apis/cpp/example/partitioned-tables.md | 179 +
website/docs/apis/cpp/example/prefix-lookup.md | 109 +
.../docs/apis/cpp/example/primary-key-tables.md | 179 +
website/docs/apis/cpp/installation.md | 107 +
website/docs/apis/index.md | 42 +
website/docs/apis/java/_category_.json | 4 +
.../docs/apis/{java-client.md => java/index.md} | 0
website/docs/apis/python-client.md | 45 -
website/docs/apis/python/_category_.json | 4 +
website/docs/apis/python/api-reference.md | 405 ++
website/docs/apis/python/data-types.md | 181 +
website/docs/apis/python/error-handling.md | 168 +
website/docs/apis/python/example/_category_.json | 4 +
.../docs/apis/python/example/admin-operations.md | 81 +
website/docs/apis/python/example/configuration.md | 49 +
website/docs/apis/python/example/index.md | 46 +
website/docs/apis/python/example/log-tables.md | 143 +
.../docs/apis/python/example/partitioned-tables.md | 104 +
.../docs/apis/python/example/primary-key-tables.md | 95 +
website/docs/apis/python/installation.md | 41 +
website/docs/apis/rust-client.md | 53 -
website/docs/apis/rust/_category_.json | 4 +
website/docs/apis/rust/api-reference.md | 651 +++
website/docs/apis/rust/data-types.md | 179 +
website/docs/apis/rust/error-handling.md | 241 +
website/docs/apis/rust/example/_category_.json | 4 +
website/docs/apis/rust/example/admin-operations.md | 122 +
website/docs/apis/rust/example/configuration.md | 35 +
website/docs/apis/rust/example/index.md | 56 +
website/docs/apis/rust/example/log-tables.md | 172 +
.../docs/apis/rust/example/partitioned-tables.md | 219 +
website/docs/apis/rust/example/prefix-lookup.md | 110 +
.../docs/apis/rust/example/primary-key-tables.md | 183 +
website/docs/apis/rust/installation.md | 76 +
website/docs/apis/rust/metrics.md | 179 +
.../docs/table-design/merge-engines/aggregation.md | 2 +-
website/docusaurus.config.ts | 2 +-
475 files changed, 123364 insertions(+), 216 deletions(-)
create mode 100644 .github/actions/verify-tag-version/action.yml
create mode 100644 .github/dependabot.yml
create mode 100644 .github/release.yml
create mode 100644 .github/workflows/client-integration.yml
create mode 100644 .github/workflows/python-release.yml
create mode 100644 .github/workflows/rust-build-and-test.yml
copy .github/workflows/{ci.yaml => rust-docs-check.yml} (56%)
create mode 100644 .github/workflows/rust-license-and-format.yml
create mode 100644 .github/workflows/rust-release.yml
create mode 100644 fluss-rust/.cargo/config.toml
create mode 100644 fluss-rust/.gitignore
create mode 100644 fluss-rust/.licenserc.yaml
create mode 100644 fluss-rust/Cargo.lock
create mode 100644 fluss-rust/Cargo.toml
create mode 100644 fluss-rust/DEPENDENCIES.rust.tsv
create mode 100644 fluss-rust/DEVELOPMENT.md
create mode 100644 fluss-rust/MODULE.bazel
create mode 100644 fluss-rust/README.md
create mode 100644 fluss-rust/bindings/cpp/.bazelrc
create mode 100644 fluss-rust/bindings/cpp/.clang-format
create mode 100644 fluss-rust/bindings/cpp/.gitignore
create mode 100644 fluss-rust/bindings/cpp/BUILD.bazel
create mode 100644 fluss-rust/bindings/cpp/CMakeLists.txt
create mode 100644 fluss-rust/bindings/cpp/Cargo.toml
create mode 100644 fluss-rust/bindings/cpp/DEPENDENCIES.rust.tsv
create mode 100644 fluss-rust/bindings/cpp/README.md
create mode 100644 fluss-rust/bindings/cpp/bazel/cpp/BUILD.bazel
create mode 100644 fluss-rust/bindings/cpp/bazel/cpp/deps.bzl
create mode 100644 fluss-rust/bindings/cpp/build.rs
create mode 100755 fluss-rust/bindings/cpp/ci.sh
create mode 100644 fluss-rust/bindings/cpp/examples/admin_example.cpp
create mode 100644
fluss-rust/bindings/cpp/examples/bazel-consumer/build/BUILD.bazel
create mode 100644
fluss-rust/bindings/cpp/examples/bazel-consumer/build/MODULE.bazel
create mode 100644
fluss-rust/bindings/cpp/examples/bazel-consumer/build/main.cc
create mode 100644
fluss-rust/bindings/cpp/examples/bazel-consumer/system/BUILD.bazel
create mode 100644
fluss-rust/bindings/cpp/examples/bazel-consumer/system/MODULE.bazel
create mode 100644
fluss-rust/bindings/cpp/examples/bazel-consumer/system/main.cc
create mode 100644 fluss-rust/bindings/cpp/examples/example.cpp
create mode 100644 fluss-rust/bindings/cpp/examples/kv_changelog_example.cpp
create mode 100644 fluss-rust/bindings/cpp/examples/kv_example.cpp
create mode 100644 fluss-rust/bindings/cpp/include/fluss.hpp
create mode 100755 fluss-rust/bindings/cpp/scripts/ensure_protoc.sh
create mode 100644 fluss-rust/bindings/cpp/src/admin.cpp
create mode 100644 fluss-rust/bindings/cpp/src/connection.cpp
create mode 100644 fluss-rust/bindings/cpp/src/ffi_converter.hpp
create mode 100644 fluss-rust/bindings/cpp/src/lib.rs
create mode 100644 fluss-rust/bindings/cpp/src/table.cpp
create mode 100644 fluss-rust/bindings/cpp/src/type_lowering.hpp
create mode 100644 fluss-rust/bindings/cpp/src/types.rs
create mode 100644 fluss-rust/bindings/cpp/test/test_admin.cpp
create mode 100644 fluss-rust/bindings/cpp/test/test_ffi_converter.cpp
create mode 100644 fluss-rust/bindings/cpp/test/test_kv_changelog.cpp
create mode 100644 fluss-rust/bindings/cpp/test/test_kv_table.cpp
create mode 100644 fluss-rust/bindings/cpp/test/test_log_table.cpp
create mode 100644 fluss-rust/bindings/cpp/test/test_main.cpp
create mode 100644 fluss-rust/bindings/cpp/test/test_sasl_auth.cpp
create mode 100644 fluss-rust/bindings/cpp/test/test_utils.h
create mode 100644 fluss-rust/bindings/elixir/.formatter.exs
create mode 100644 fluss-rust/bindings/elixir/.gitignore
create mode 100644 fluss-rust/bindings/elixir/README.md
create mode 100644 fluss-rust/bindings/elixir/lib/fluss.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/admin.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/append_writer.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/config.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/connection.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/database_descriptor.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/database_info.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/error.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/log_scanner.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/native.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/schema.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/schema_info.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/server_node.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/table.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/table_descriptor.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/table_info.ex
create mode 100644 fluss-rust/bindings/elixir/lib/fluss/write_handle.ex
create mode 100644 fluss-rust/bindings/elixir/mix.exs
create mode 100644 fluss-rust/bindings/elixir/mix.lock
create mode 100644 fluss-rust/bindings/elixir/native/fluss_nif/Cargo.toml
create mode 100644 fluss-rust/bindings/elixir/native/fluss_nif/src/admin.rs
create mode 100644
fluss-rust/bindings/elixir/native/fluss_nif/src/append_writer.rs
create mode 100644 fluss-rust/bindings/elixir/native/fluss_nif/src/async_nif.rs
create mode 100644 fluss-rust/bindings/elixir/native/fluss_nif/src/atoms.rs
create mode 100644 fluss-rust/bindings/elixir/native/fluss_nif/src/config.rs
create mode 100644
fluss-rust/bindings/elixir/native/fluss_nif/src/connection.rs
create mode 100644 fluss-rust/bindings/elixir/native/fluss_nif/src/lib.rs
create mode 100644
fluss-rust/bindings/elixir/native/fluss_nif/src/log_scanner.rs
create mode 100644
fluss-rust/bindings/elixir/native/fluss_nif/src/row_convert.rs
create mode 100644 fluss-rust/bindings/elixir/native/fluss_nif/src/schema.rs
create mode 100644 fluss-rust/bindings/elixir/native/fluss_nif/src/table.rs
create mode 100644
fluss-rust/bindings/elixir/native/fluss_nif/src/write_handle.rs
create mode 100644 fluss-rust/bindings/elixir/test/config_test.exs
create mode 100644 fluss-rust/bindings/elixir/test/database_descriptor_test.exs
create mode 100644 fluss-rust/bindings/elixir/test/error_test.exs
create mode 100644 fluss-rust/bindings/elixir/test/fluss_test.exs
create mode 100644 fluss-rust/bindings/elixir/test/integration/admin_test.exs
create mode 100644
fluss-rust/bindings/elixir/test/integration/log_table_test.exs
create mode 100644 fluss-rust/bindings/elixir/test/support/cluster.ex
create mode 100644 fluss-rust/bindings/elixir/test/support/integration_case.ex
create mode 100644 fluss-rust/bindings/elixir/test/table_descriptor_test.exs
create mode 100644 fluss-rust/bindings/elixir/test/test_helper.exs
create mode 100644 fluss-rust/bindings/python/Cargo.toml
create mode 100644 fluss-rust/bindings/python/DEPENDENCIES.rust.tsv
create mode 100644 fluss-rust/bindings/python/DEVELOPMENT.md
create mode 100644 fluss-rust/bindings/python/PYPI_README.md
create mode 100644 fluss-rust/bindings/python/README.md
create mode 100644 fluss-rust/bindings/python/example/complex_types.py
create mode 100644 fluss-rust/bindings/python/example/kv_changelog.py
create mode 100644 fluss-rust/bindings/python/example/log_table.py
create mode 100644 fluss-rust/bindings/python/example/partitioned_kv_table.py
create mode 100644 fluss-rust/bindings/python/example/partitioned_table.py
create mode 100644 fluss-rust/bindings/python/example/pk_table.py
create mode 100644 fluss-rust/bindings/python/fluss/__init__.py
create mode 100644 fluss-rust/bindings/python/fluss/__init__.pyi
copy website/static/.nojekyll => fluss-rust/bindings/python/fluss/py.typed
(100%)
create mode 100644 fluss-rust/bindings/python/pyproject.toml
create mode 100644 fluss-rust/bindings/python/src/admin.rs
create mode 100644 fluss-rust/bindings/python/src/config.rs
create mode 100644 fluss-rust/bindings/python/src/connection.rs
create mode 100644 fluss-rust/bindings/python/src/error.rs
create mode 100644 fluss-rust/bindings/python/src/lib.rs
create mode 100644 fluss-rust/bindings/python/src/lookup.rs
create mode 100644 fluss-rust/bindings/python/src/metadata.rs
create mode 100644 fluss-rust/bindings/python/src/table.rs
create mode 100644 fluss-rust/bindings/python/src/upsert.rs
create mode 100644 fluss-rust/bindings/python/src/utils.rs
create mode 100644 fluss-rust/bindings/python/src/write_handle.rs
create mode 100644 fluss-rust/bindings/python/stubtest-allowlist.txt
create mode 100644 fluss-rust/bindings/python/test/conftest.py
create mode 100644 fluss-rust/bindings/python/test/test_admin.py
create mode 100644 fluss-rust/bindings/python/test/test_batch_scanner.py
create mode 100644 fluss-rust/bindings/python/test/test_context_manager.py
create mode 100644 fluss-rust/bindings/python/test/test_examples.py
create mode 100644 fluss-rust/bindings/python/test/test_kv_changelog.py
create mode 100644 fluss-rust/bindings/python/test/test_kv_table.py
create mode 100644 fluss-rust/bindings/python/test/test_log_table.py
create mode 100644 fluss-rust/bindings/python/test/test_sasl_auth.py
create mode 100644 fluss-rust/bindings/python/test/test_schema.py
create mode 100644 fluss-rust/copyright.txt
create mode 100644 fluss-rust/crates/examples/Cargo.toml
create mode 100644 fluss-rust/crates/examples/DEPENDENCIES.rust.tsv
create mode 100644 fluss-rust/crates/examples/src/example_kv_changelog.rs
create mode 100644 fluss-rust/crates/examples/src/example_kv_table.rs
create mode 100644
fluss-rust/crates/examples/src/example_partitioned_kv_table.rs
create mode 100644
fluss-rust/crates/examples/src/example_partitioned_prefix_lookup.rs
create mode 100644 fluss-rust/crates/examples/src/example_prefix_lookup.rs
create mode 100644 fluss-rust/crates/examples/src/example_prometheus_metrics.rs
create mode 100644 fluss-rust/crates/examples/src/example_table.rs
create mode 100644 fluss-rust/crates/fluss-test-cluster/Cargo.toml
create mode 100644 fluss-rust/crates/fluss-test-cluster/build.rs
create mode 100644 fluss-rust/crates/fluss-test-cluster/src/lib.rs
create mode 100644 fluss-rust/crates/fluss-test-cluster/src/main.rs
create mode 100644 fluss-rust/crates/fluss-test-cluster/test-images.env
create mode 100644 fluss-rust/crates/fluss/Cargo.toml
create mode 100644 fluss-rust/crates/fluss/DEPENDENCIES.rust.tsv
create mode 100644 fluss-rust/crates/fluss/README.md
create mode 100644 fluss-rust/crates/fluss/build.rs
create mode 100644 fluss-rust/crates/fluss/src/bucketing/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/client/admin.rs
create mode 100644 fluss-rust/crates/fluss/src/client/connection.rs
create mode 100644 fluss-rust/crates/fluss/src/client/credentials.rs
create mode 100644 fluss-rust/crates/fluss/src/client/lookup/lookup_client.rs
create mode 100644 fluss-rust/crates/fluss/src/client/lookup/lookup_query.rs
create mode 100644 fluss-rust/crates/fluss/src/client/lookup/lookup_queue.rs
create mode 100644 fluss-rust/crates/fluss/src/client/lookup/lookup_sender.rs
create mode 100644 fluss-rust/crates/fluss/src/client/lookup/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/client/metadata.rs
create mode 100644 fluss-rust/crates/fluss/src/client/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/client/schema_getter.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/append.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/batch_scanner.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/log_fetch_buffer.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/lookup.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/partition_getter.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/reader.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/remote_log.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/scanner.rs
create mode 100644 fluss-rust/crates/fluss/src/client/table/upsert.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/accumulator.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/batch.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/broadcast.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/bucket_assigner.rs
create mode 100644
fluss-rust/crates/fluss/src/client/write/dynamic_batch_size.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/idempotence.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/sender.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/write_format.rs
create mode 100644 fluss-rust/crates/fluss/src/client/write/writer_client.rs
create mode 100644 fluss-rust/crates/fluss/src/cluster/cluster.rs
create mode 100644 fluss-rust/crates/fluss/src/cluster/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/compression/arrow_compression.rs
create mode 100644
fluss-rust/crates/fluss/src/compression/arrow_compression_ratio_estimator.rs
create mode 100644 fluss-rust/crates/fluss/src/compression/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/config.rs
create mode 100644 fluss-rust/crates/fluss/src/error.rs
create mode 100644 fluss-rust/crates/fluss/src/io/file_io.rs
create mode 100644 fluss-rust/crates/fluss/src/io/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/io/storage.rs
create mode 100644 fluss-rust/crates/fluss/src/io/storage_fs.rs
create mode 100644 fluss-rust/crates/fluss/src/io/storage_memory.rs
create mode 100644 fluss-rust/crates/fluss/src/io/storage_oss.rs
create mode 100644 fluss-rust/crates/fluss/src/io/storage_s3.rs
create mode 100644 fluss-rust/crates/fluss/src/lib.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/acl.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/cluster_health.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/config.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/data_lake_format.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/database.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/datatype.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/goal_type.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/json_serde.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/kv_snapshot.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/kv_snapshot_lease.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/lake_snapshot.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/partition.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/producer_offsets.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/rebalance.rs
create mode 100644
fluss-rust/crates/fluss/src/metadata/register_producer_result.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/remote_log.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/schema_util.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/server_tag.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/table.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/table_change.rs
create mode 100644 fluss-rust/crates/fluss/src/metadata/table_stats.rs
create mode 100644 fluss-rust/crates/fluss/src/metrics.rs
create mode 100644 fluss-rust/crates/fluss/src/record/arrow.rs
create mode 100644 fluss-rust/crates/fluss/src/record/error.rs
create mode 100644 fluss-rust/crates/fluss/src/record/kv/kv_record.rs
create mode 100644 fluss-rust/crates/fluss/src/record/kv/kv_record_batch.rs
create mode 100644
fluss-rust/crates/fluss/src/record/kv/kv_record_batch_builder.rs
create mode 100644
fluss-rust/crates/fluss/src/record/kv/kv_record_read_context.rs
create mode 100644 fluss-rust/crates/fluss/src/record/kv/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/record/kv/read_context.rs
create mode 100644 fluss-rust/crates/fluss/src/record/kv/test_util.rs
create mode 100644 fluss-rust/crates/fluss/src/record/kv/value_record_batch.rs
create mode 100644 fluss-rust/crates/fluss/src/record/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/row/binary/binary_writer.rs
create mode 100644
fluss-rust/crates/fluss/src/row/binary/iceberg_binary_row_writer.rs
create mode 100644 fluss-rust/crates/fluss/src/row/binary/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/row/binary_array.rs
create mode 100644 fluss-rust/crates/fluss/src/row/binary_map.rs
create mode 100644 fluss-rust/crates/fluss/src/row/column.rs
create mode 100644 fluss-rust/crates/fluss/src/row/column_vector.rs
create mode 100644 fluss-rust/crates/fluss/src/row/column_writer.rs
create mode 100644 fluss-rust/crates/fluss/src/row/columnar.rs
create mode 100644
fluss-rust/crates/fluss/src/row/compacted/compacted_key_writer.rs
create mode 100644 fluss-rust/crates/fluss/src/row/compacted/compacted_row.rs
create mode 100644
fluss-rust/crates/fluss/src/row/compacted/compacted_row_reader.rs
create mode 100644
fluss-rust/crates/fluss/src/row/compacted/compacted_row_writer.rs
create mode 100644 fluss-rust/crates/fluss/src/row/compacted/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/row/datum.rs
create mode 100644 fluss-rust/crates/fluss/src/row/decimal.rs
create mode 100644
fluss-rust/crates/fluss/src/row/encode/compacted_key_encoder.rs
create mode 100644
fluss-rust/crates/fluss/src/row/encode/compacted_row_encoder.rs
create mode 100644 fluss-rust/crates/fluss/src/row/encode/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/row/encode/paimon_key_encoder.rs
create mode 100644 fluss-rust/crates/fluss/src/row/field_getter.rs
create mode 100644 fluss-rust/crates/fluss/src/row/fixed_schema_decoder.rs
create mode 100644 fluss-rust/crates/fluss/src/row/lookup_row.rs
create mode 100644 fluss-rust/crates/fluss/src/row/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/row/paimon/mod.rs
create mode 100644
fluss-rust/crates/fluss/src/row/paimon/paimon_binary_row_writer.rs
create mode 100644 fluss-rust/crates/fluss/src/row/projected_row.rs
create mode 100644 fluss-rust/crates/fluss/src/row/row_decoder.rs
create mode 100644 fluss-rust/crates/fluss/src/row/view.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/api_key.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/api_version.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/convert.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/error.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/fluss_api_error.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/frame.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/acquire_kv_snapshot_lease.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/add_server_tag.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/alter_cluster_configs.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/alter_database.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/alter_table.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/api_versions.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/authenticate.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/cancel_rebalance.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/create_acls.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/create_database.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/create_partition.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/create_table.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/database_exists.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/delete_producer_offsets.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/describe_cluster_configs.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/drop_acls.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/drop_database.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/drop_kv_snapshot_lease.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/drop_partition.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/drop_table.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/fetch.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/get_cluster_health.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/get_database_info.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/get_kv_snapshot_metadata.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/get_lake_snapshot.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/get_latest_kv_snapshots.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/get_latest_lake_snapshot.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/get_producer_offsets.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/get_security_token.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/get_table.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/get_table_schema.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/get_table_stats.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/header.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/init_writer.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/limit_scan.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/list_acls.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/list_database_summaries.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/list_databases.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/list_kv_snapshots.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/list_offsets.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/list_partition_infos.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/list_rebalance_progress.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/list_remote_log_manifests.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/list_tables.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/lookup.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/prefix_lookup.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/produce_log.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/put_kv.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/rebalance.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/register_producer_offsets.rs
create mode 100644
fluss-rust/crates/fluss/src/rpc/message/release_kv_snapshot_lease.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/remove_server_tag.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/scan_kv.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/table_exists.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/message/update_metadata.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/server_connection.rs
create mode 100644 fluss-rust/crates/fluss/src/rpc/transport.rs
create mode 100644 fluss-rust/crates/fluss/src/test_utils.rs
create mode 100644 fluss-rust/crates/fluss/src/util/mod.rs
create mode 100644 fluss-rust/crates/fluss/src/util/murmur_hash.rs
create mode 100644 fluss-rust/crates/fluss/src/util/partition.rs
create mode 100644 fluss-rust/crates/fluss/src/util/varint.rs
create mode 100644 fluss-rust/crates/fluss/tests/integration/admin.rs
create mode 100644 fluss-rust/crates/fluss/tests/integration/batch_scanner.rs
create mode 100644 fluss-rust/crates/fluss/tests/integration/fluss_cluster.rs
create mode 100644 fluss-rust/crates/fluss/tests/integration/kv_changelog.rs
create mode 100644 fluss-rust/crates/fluss/tests/integration/kv_table.rs
create mode 100644 fluss-rust/crates/fluss/tests/integration/log_table.rs
create mode 100644
fluss-rust/crates/fluss/tests/integration/record_batch_log_reader.rs
create mode 100644 fluss-rust/crates/fluss/tests/integration/sasl_auth.rs
create mode 100644
fluss-rust/crates/fluss/tests/integration/table_remote_scan.rs
create mode 100644 fluss-rust/crates/fluss/tests/integration/utils.rs
create mode 100644 fluss-rust/crates/fluss/tests/test_fluss.rs
create mode 100644 fluss-rust/deny.toml
create mode 100644 fluss-rust/docs/cpp-bazel-usage.md
create mode 100644 fluss-rust/docs/cpp-cmake-usage.md
create mode 100644 fluss-rust/justfile
create mode 100644 fluss-rust/rust-toolchain.toml
create mode 100644 fluss-rust/rustfmt.toml
create mode 100755 fluss-rust/scripts/bump-version.sh
create mode 100644 fluss-rust/scripts/constants.py
create mode 100644 fluss-rust/scripts/dependencies.py
create mode 100755 fluss-rust/scripts/release.sh
create mode 100755 fluss-rust/scripts/vendor-proto.sh
create mode 100644 fluss-rust/website/babel.config.js
create mode 100644 fluss-rust/website/docs/developer-guide/contributing.md
create mode 100644 fluss-rust/website/docs/index.md
create mode 100644 fluss-rust/website/docs/release/create-release.md
create mode 100644 fluss-rust/website/docs/release/generate-release-note.md
create mode 100644
fluss-rust/website/docs/release/verifying-a-release-candidate.md
create mode 100644 fluss-rust/website/docs/user-guide/_category_.json
create mode 100644 fluss-rust/website/docs/user-guide/cpp/_category_.json
create mode 100644 fluss-rust/website/docs/user-guide/cpp/api-reference.md
create mode 100644 fluss-rust/website/docs/user-guide/cpp/data-types.md
create mode 100644 fluss-rust/website/docs/user-guide/cpp/error-handling.md
create mode 100644
fluss-rust/website/docs/user-guide/cpp/example/_category_.json
create mode 100644
fluss-rust/website/docs/user-guide/cpp/example/admin-operations.md
create mode 100644
fluss-rust/website/docs/user-guide/cpp/example/configuration.md
create mode 100644 fluss-rust/website/docs/user-guide/cpp/example/index.md
create mode 100644 fluss-rust/website/docs/user-guide/cpp/example/log-tables.md
create mode 100644
fluss-rust/website/docs/user-guide/cpp/example/partitioned-tables.md
create mode 100644
fluss-rust/website/docs/user-guide/cpp/example/prefix-lookup.md
create mode 100644
fluss-rust/website/docs/user-guide/cpp/example/primary-key-tables.md
create mode 100644 fluss-rust/website/docs/user-guide/cpp/installation.md
create mode 100644 fluss-rust/website/docs/user-guide/python/_category_.json
create mode 100644 fluss-rust/website/docs/user-guide/python/api-reference.md
create mode 100644 fluss-rust/website/docs/user-guide/python/data-types.md
create mode 100644 fluss-rust/website/docs/user-guide/python/error-handling.md
create mode 100644
fluss-rust/website/docs/user-guide/python/example/_category_.json
create mode 100644
fluss-rust/website/docs/user-guide/python/example/admin-operations.md
create mode 100644
fluss-rust/website/docs/user-guide/python/example/configuration.md
create mode 100644 fluss-rust/website/docs/user-guide/python/example/index.md
create mode 100644
fluss-rust/website/docs/user-guide/python/example/log-tables.md
create mode 100644
fluss-rust/website/docs/user-guide/python/example/partitioned-tables.md
create mode 100644
fluss-rust/website/docs/user-guide/python/example/primary-key-tables.md
create mode 100644 fluss-rust/website/docs/user-guide/python/installation.md
create mode 100644 fluss-rust/website/docs/user-guide/rust/_category_.json
create mode 100644 fluss-rust/website/docs/user-guide/rust/api-reference.md
create mode 100644 fluss-rust/website/docs/user-guide/rust/data-types.md
create mode 100644 fluss-rust/website/docs/user-guide/rust/error-handling.md
create mode 100644
fluss-rust/website/docs/user-guide/rust/example/_category_.json
create mode 100644
fluss-rust/website/docs/user-guide/rust/example/admin-operations.md
create mode 100644
fluss-rust/website/docs/user-guide/rust/example/configuration.md
create mode 100644 fluss-rust/website/docs/user-guide/rust/example/index.md
create mode 100644
fluss-rust/website/docs/user-guide/rust/example/log-tables.md
create mode 100644
fluss-rust/website/docs/user-guide/rust/example/partitioned-tables.md
create mode 100644
fluss-rust/website/docs/user-guide/rust/example/prefix-lookup.md
create mode 100644
fluss-rust/website/docs/user-guide/rust/example/primary-key-tables.md
create mode 100644 fluss-rust/website/docs/user-guide/rust/installation.md
create mode 100644 fluss-rust/website/docs/user-guide/rust/metrics.md
create mode 100644 fluss-rust/website/docusaurus.config.ts
create mode 100644 fluss-rust/website/package.json
create mode 100644 fluss-rust/website/sidebars.ts
create mode 100644 fluss-rust/website/src/css/custom.css
create mode 100644 fluss-rust/website/static/CNAME
copy {website => fluss-rust/website}/static/img/logo/fluss_favicon.svg (100%)
copy {website => fluss-rust/website}/static/img/logo/png/colored_logo.png
(100%)
copy {website => fluss-rust/website}/static/img/logo/svg/colored_logo.svg
(100%)
copy {website/community/assets =>
fluss-rust/website/static/img}/release-guide.png (100%)
create mode 100644 fluss-rust/website/static/manifest.json
create mode 100644 fluss-rust/website/tsconfig.json
create mode 100644 website/community/how-to-release/pre-rc-checklist.md
delete mode 100644 website/docs/apis/cpp-client.md
create mode 100644 website/docs/apis/cpp/_category_.json
create mode 100644 website/docs/apis/cpp/api-reference.md
create mode 100644 website/docs/apis/cpp/data-types.md
create mode 100644 website/docs/apis/cpp/error-handling.md
create mode 100644 website/docs/apis/cpp/example/_category_.json
create mode 100644 website/docs/apis/cpp/example/admin-operations.md
create mode 100644 website/docs/apis/cpp/example/configuration.md
create mode 100644 website/docs/apis/cpp/example/index.md
create mode 100644 website/docs/apis/cpp/example/log-tables.md
create mode 100644 website/docs/apis/cpp/example/partitioned-tables.md
create mode 100644 website/docs/apis/cpp/example/prefix-lookup.md
create mode 100644 website/docs/apis/cpp/example/primary-key-tables.md
create mode 100644 website/docs/apis/cpp/installation.md
create mode 100644 website/docs/apis/index.md
create mode 100644 website/docs/apis/java/_category_.json
rename website/docs/apis/{java-client.md => java/index.md} (100%)
delete mode 100644 website/docs/apis/python-client.md
create mode 100644 website/docs/apis/python/_category_.json
create mode 100644 website/docs/apis/python/api-reference.md
create mode 100644 website/docs/apis/python/data-types.md
create mode 100644 website/docs/apis/python/error-handling.md
create mode 100644 website/docs/apis/python/example/_category_.json
create mode 100644 website/docs/apis/python/example/admin-operations.md
create mode 100644 website/docs/apis/python/example/configuration.md
create mode 100644 website/docs/apis/python/example/index.md
create mode 100644 website/docs/apis/python/example/log-tables.md
create mode 100644 website/docs/apis/python/example/partitioned-tables.md
create mode 100644 website/docs/apis/python/example/primary-key-tables.md
create mode 100644 website/docs/apis/python/installation.md
delete mode 100644 website/docs/apis/rust-client.md
create mode 100644 website/docs/apis/rust/_category_.json
create mode 100644 website/docs/apis/rust/api-reference.md
create mode 100644 website/docs/apis/rust/data-types.md
create mode 100644 website/docs/apis/rust/error-handling.md
create mode 100644 website/docs/apis/rust/example/_category_.json
create mode 100644 website/docs/apis/rust/example/admin-operations.md
create mode 100644 website/docs/apis/rust/example/configuration.md
create mode 100644 website/docs/apis/rust/example/index.md
create mode 100644 website/docs/apis/rust/example/log-tables.md
create mode 100644 website/docs/apis/rust/example/partitioned-tables.md
create mode 100644 website/docs/apis/rust/example/prefix-lookup.md
create mode 100644 website/docs/apis/rust/example/primary-key-tables.md
create mode 100644 website/docs/apis/rust/installation.md
create mode 100644 website/docs/apis/rust/metrics.md