Commit Graph

5778 Commits

Author SHA1 Message Date
Lei, HUANG d46a35c4d4 typo: rename prefence to pre_fence to bypass typo check
Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-24 11:26:50 +08:00
Lei, HUANG eac507ecab fix(mito2): notify cancelled compaction pending ddl
Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-24 11:24:53 +08:00
Lei, HUANG 8e3b25397f Merge remote-tracking branch 'GreptimeTeam/main' into fix/revise-compaction-picker
# Conflicts:
#	src/mito2/src/compaction.rs
#	src/mito2/src/worker/handle_compaction.rs
2026-07-24 00:34:06 +08:00
Lei, HUANG 6652ac1548 fix(mito2): keep in-flight compaction plan when scheduling next
Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-24 00:26:34 +08:00
Lei, HUANG 4f6d48fc5e fix(mito2): avoid panic-based compaction status lookups
Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 23:48:30 +08:00
Lei, HUANG 419f558afd fix(mito2): serialize truncate with compaction
Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 22:28:05 +08:00
Weny Xu 82de463940 fix(meta): configure gRPC message limits (#8616)
* fix(meta): configure gRPC message limits

Signed-off-by: WenyXu <wenymedia@gmail.com>

* fix(meta): preserve follower range limits

Signed-off-by: WenyXu <wenymedia@gmail.com>

---------

Signed-off-by: WenyXu <wenymedia@gmail.com>
2026-07-23 14:02:29 +00:00
Lei, HUANG d1ac9e2da7 fix(mito2): remove stale compaction status when next compaction is throttled (#8618)
When a compaction finishes with no pending request/DDL, on_compaction_finished
leaves the region's CompactionStatus in the map with no active compaction. If
the worker then skips schedule_next_compaction because min_compaction_interval
has not passed, the stale status is never cleaned up: all subsequent compaction
requests are swallowed by the "status exists" branch (regular waiters hang,
manual StrictWindow requests pend forever) and the region never compacts again
until restart.

Add CompactionScheduler::remove_inactive_status() and call it from
handle_compaction_finished when the interval gate skips scheduling the next
compaction, restoring the invariant that a status in the map always has an
active compaction.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 12:03:11 +00:00
Ning Sun 52ba89bb10 feat: invoke gc hook for offline region cleanup (#8613)
* feat: invoke gc hook for offline cleanup

* chore: doc change according to review request
2026-07-23 11:55:37 +00:00
fys 837b701e68 fix(json2): encode deeply nested values as jsonb (#8612)
* fix(json2): encode deeply nested values as jsonb

Signed-off-by: fys <fengys1996@gmail.com>

* add more sqlness

Signed-off-by: fys <fengys1996@gmail.com>

* some changes

Signed-off-by: fys <fengys1996@gmail.com>

* fix(json2): limit type hint path depth

Signed-off-by: fys <fengys1996@gmail.com>

---------

Signed-off-by: fys <fengys1996@gmail.com>
2026-07-23 10:29:31 +00:00
Lei, HUANG 11b80b9b44 fix(mito2): report stale compaction execution instead of region closed
When a compaction finishes but its execution no longer matches the
current one, the region may have been reopened or truncated, or the
compaction was superseded. Reporting RegionClosed to waiters is
misleading; introduce a neutral StaleCompactionExecution error (same
Cancelled status code) for this case.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 17:41:23 +08:00
Lei, HUANG fa0cf5ec4b refactor(mito2): make compaction scheduling methods synchronous
schedule_compaction, handle_pending_compaction_request and
schedule_next_compaction no longer await anything after compaction
planning became fire-and-forget. Drop the async signature to make the
no-suspension-point invariant explicit: these methods always run to
completion on the worker loop without reentrancy.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 17:39:20 +08:00
Lei, HUANG 1272022fa8 fix(mito2): remove idle compaction status to prevent zombie state
When a compaction finished within min_compaction_interval with no
pending requests, on_compaction_finished left an idle status
(phase = None) behind. The worker then skipped chaining the next
compaction due to the interval gate, and the leftover status made
schedule_compaction swallow all future triggers of the region: regular
waiters were queued but never woken, and manual requests stayed pending
forever. The region stopped compacting until close/drop/truncate.

Add CompactionScheduler::remove_idle_status and call it from
handle_compaction_finished when the interval has not elapsed and no
chained planning is scheduled. The chain-until-no-plan semantics for
compactions that outlast the interval is preserved.

Also drops an unused import left by the previous commit.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 17:24:00 +08:00
Lei, HUANG 7353a004a8 fix(mito2): dec inflight compaction gauge after re-entrancy guard
DefaultNotifier::notify decremented INFLIGHT_COMPACTION_COUNT before the
re-entrancy guard, so a duplicate notify (which should never happen, but
the guard exists to defend against it) would decrement the gauge an
extra time and let it drift negative. Move the decrement after the
guard, matching the local compaction path's guard-then-account order.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 17:23:38 +08:00
Lei, HUANG f89d9d1334 fix(mito2): notify pick finished even when compaction planning panics
The worker only leaves the picking phase after receiving the
CompactionPickFinished notification. Previously the planning task was
spawned fire-and-forget: if it panicked before sending the notification,
the region would be stuck in the picking phase forever, blocking all
future compactions and pending DDLs (e.g. entering staging) of the
region.

Wrap the planning future with catch_unwind so a panic is converted into
a CompactionPlanningResult::Error and the notification is always sent,
letting the worker run the normal error cleanup path.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 16:20:29 +08:00
Yingwen bfd7abb0b8 feat(mito): add candidate series scanner (#8586)
* feat(mito): add candidate series scanner

Signed-off-by: evenyag <realevenyag@gmail.com>

* refactor(mito): exclude other ranges from candidate scan

Signed-off-by: evenyag <realevenyag@gmail.com>

* feat(mito): bench series candidate scan

Signed-off-by: evenyag <realevenyag@gmail.com>

* refactor(mito): clean up series candidate scanner

Signed-off-by: evenyag <realevenyag@gmail.com>

* refactor(mito): improve candidate series scan

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix(mito2): guard primary-key-only SST reads

Signed-off-by: evenyag <realevenyag@gmail.com>

* docs(mito2): clarify candidate scanner invariants

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix(mito2): compat primary-key-only reads

Signed-off-by: evenyag <realevenyag@gmail.com>

---------

Signed-off-by: evenyag <realevenyag@gmail.com>
2026-07-23 07:08:03 +00:00
raphaelroshan e19df8960e fix: prevent credential leaks in sanitize_connection_string (#8539)
Parse PostgreSQL DSNs (URL or libpq keyword) with tokio_postgres::Config —
the backend's own parser — and log its Debug, which redacts the password.
This matches the backend grammar exactly (multi-host URIs, backslash
escapes, any Unicode whitespace, percent-encoded query keys, and '&'/';'/
'://' inside values) rather than approximating it by hand. Other URLs are
redacted via the url crate; a best-effort keyword fallback covers inputs
neither parser accepts.

Signed-off-by: raphaelroshan <raphaelroshan@gmail.com>
2026-07-23 07:05:34 +00:00
dennis zhuang 8d9f24d1b6 docs: add entity relationships and graph query RFC (#8605)
* docs: add entity relationships and graph query RFC

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* docs: revise entity-graph RFC after review

- Zero-configuration declarations: the Prometheus-on-Kubernetes convention
  pack (job/instance per the OTel-Prometheus compatibility spec, k8s SD
  labels, *_info descriptors, target_info enrichment) alongside the OTLP
  trace auto-stamp, plus Remote Write 2.0 inline metadata.
- Calls endpoints follow the service entity declaration; self-calls
  compare full endpoint ids; no silent identity fallback.
- Strict time-window contract: the source window is never narrower than
  the query's observed_at range; unsafe-to-extract predicates error
  instead of silently defaulting.
- scope removed from the relationship schema (kept on entities as a
  display property); entity row contract restated per projected
  observation; endpoint encoding documented as the v1 storage-level key
  with its known collision limitation.
- Sampling caveats corrected (ratios are representative only under
  unbiased sampling); snapshot relation synthesizes endpoint-only
  vertices; shared attributes provide join keys while co-declaration
  provides relationship semantics.

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* docs: align entity-graph RFC contracts and tighten prose

- Metric/trace service unification is promised only when service.namespace
  is empty and job is not relabeled (the compatibility spec renders job as
  <namespace>/<name>); otherwise alignment needs pipeline normalization or
  explicit declarations.
- Entity row contract stated once (per projected observation); the calls
  defining SQL is marked as the single-column simplification of the
  declaration-derived endpoint ids; Remote Write 2.0 metadata intake and
  the Prometheus implicit declarations are listed as M1 work.
- Compress survey/example/reference prose.

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* docs: pin down the k8s convention pack rules and edge directions

- kube_pod_owner implicitly declares k8s.workload with id
  (namespace, owner_kind, owner_name) and derives pod part_of workload;
  target_info's non-job/instance labels are implicit service descriptive
  columns — fixed rules, no new declaration syntax.
- One direction for pod placement: k8s.pod runs_on k8s.node (pod added to
  runs_on sources; node->pod removed from contains).
- Drop the remaining 'canonical' wording for the v1 storage-level id.

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* docs: make contains/part_of a true inverse pair

part_of covers service.instance->service and k8s.pod->k8s.workload with
contains as its inverse; has_instance is dropped.

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* docs: rewrite entity-graph RFC as a design narrative

Restructure for human review: mainline first, cases illustrate the
design instead of specifying it.

- New Architecture and Benefits and Drawbacks sections; the calls
  derivation stays expanded as the flagship example while schema
  enumerations, window-rule listings, and executor edge-case handling
  move out of the document.
- The cross-signal promise is stated honestly: neighbours and their
  source tables are discovered first, their telemetry is the next
  query — one engine, two statements; the worked example shows the
  full declaration -> entity -> edge -> telemetry flow.
- Default materialisation added as the most direct alternative to
  read-time derivation, with its costs.

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* docs: final wording pass on the entity-graph RFC

Mark the property-graph DDL as illustrative rather than settled M2
syntax, credit standards as foundations rather than claiming wholesale
alignment, and clean up punctuation-heavy prose.

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* docs: keep the RFC at design altitude

Demote the convention-pack rule details and snapshot property-merge
semantics to the implementing changes; correct the single-trace-table
assumption (traces can be routed to multiple tables); record
attribute-key participation in entity equality as an open question.

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

* docs: correct service graph terminology

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>

---------

Signed-off-by: Dennis Zhuang <killme2008@gmail.com>
2026-07-23 06:47:41 +00:00
Lei, HUANG b82aa10f09 refactor(mito2): run compaction picking in background with plan tracking
Move the compaction picker out of the region worker's critical path by
dispatching planning to a background task and reporting the result back
via CompactionPickFinished. CompactionStatus now tracks an explicit
picking phase keyed by a monotonic plan id, so stale planning results
are rejected and duplicate regular triggers coalesce while picking.

Before submitting a prepared compaction, the picker output is refreshed
against the current SST version (file handles are re-resolved and
conflicts roll back reservations), ensuring the plan still matches live
state. CompactionExecution identifies the running task by
(plan id, kind, version control) so finish/cancel/fail notifications
from outdated executions are ignored.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-23 14:23:36 +08:00
discord9 45fc51ebd2 fix: demote expected remote dynamic filter misses (#8574)
Signed-off-by: discord9 <discord9@163.com>
2026-07-23 04:39:56 +00:00
Yingwen 9b579c7618 feat: make parquet row group size configurable (#8446)
* feat: make parquet row group size configurable via max_row_group_row_count region option

Signed-off-by: evenyag <realevenyag@gmail.com>

* feat: split inverted index segments across row group boundaries

Signed-off-by: evenyag <realevenyag@gmail.com>

* test: verify max_row_group_row_count region option

Signed-off-by: evenyag <realevenyag@gmail.com>

* test: update row group size sqlness result

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix(mito2): use parquet row group size for index rebuild

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix: update query perf fixture indexer builder

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix(mito2): clamp index selection to parquet rows

Signed-off-by: evenyag <realevenyag@gmail.com>

* feat: support altering parquet row group size

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix(mito2): handle idempotent append mode in mixed alters

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix(mito2): stage mixed region option alters atomically

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix(mito2): ignore inverted indexes with mismatched row counts

Signed-off-by: evenyag <realevenyag@gmail.com>

---------

Signed-off-by: evenyag <realevenyag@gmail.com>
2026-07-23 03:56:10 +00:00
shuiyisong d9122ece3c perf: optimize OTLP trace ingestion (#8604)
perf: optimize trace ingestion

Signed-off-by: shuiyisong <xixing.sys@gmail.com>
2026-07-22 13:16:19 +00:00
Lei, HUANG c8f65c7b99 feat: update flow windows after metric batch flush (#8544)
* feat: update flow windows after metric batch flush

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* refactor: move batch rows into flow notifier

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix: preserve timestamp index in metric batches

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix: avoid blocking flow notification lookups

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix: add context to timestamp extraction logs

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix: include peer in flow notification errors

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* feat: compact flow notifications with time ranges

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix: bound pending flow notification queue

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* refactor: send raw timestamps in flow notifications

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* test: update config API snapshot

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

---------

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-22 13:09:30 +00:00
LFC eddedff769 fix(json2): treat empty object as null when insert (#8602)
* fix(json2): treat empty object as null when insert

Signed-off-by: luofucong <luofc@foxmail.com>

* fix ci

Signed-off-by: luofucong <luofc@foxmail.com>

---------

Signed-off-by: luofucong <luofc@foxmail.com>
2026-07-22 13:09:02 +00:00
discord9 25217100b0 chore: pin DataFusion cardinality effect (#8562)
Signed-off-by: discord9 <discord9@163.com>
2026-07-22 12:37:09 +00:00
discord9 f107f92688 fix(query): harden range time conversion (#8515)
* fix(query): harden range time conversion

Signed-off-by: discord9 <discord9@163.com>

* Apply suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Signed-off-by: discord9 <discord9@163.com>
Co-authored-by: dennis zhuang <killme2008@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-22 11:57:04 +00:00
discord9 3155d49f84 fix: convert literals in joins and subqueries (#8501)
* fix: convert literals in joins and subqueries

Signed-off-by: discord9 <discord9@163.com>

* fix: preserve semi joins with duplicate fields

Signed-off-by: discord9 <discord9@163.com>

* test: update limit error after subquery conversion

Signed-off-by: discord9 <discord9@163.com>

---------

Signed-off-by: discord9 <discord9@163.com>
2026-07-22 10:48:26 +00:00
discord9 f65e83fe39 fix(pipeline)!: check integer narrowing (#8589)
fix(pipeline): check integer narrowing

Signed-off-by: discord9 <discord9@163.com>
2026-07-22 10:43:38 +00:00
discord9 8b47fd53bd fix: qualify scalar-subquery tables in persisted views (#8581)
fix(query): traverse scalar subqueries in views

Signed-off-by: discord9 <discord9@163.com>
2026-07-22 10:43:24 +00:00
discord9 4c5be47400 fix(flow): downgrade disabled incremental checkpoint log (#8572)
Signed-off-by: discord9 <discord9@163.com>
2026-07-22 10:41:09 +00:00
discord9 0564269426 fix: bind Prom remote read schema per query (#8591)
Signed-off-by: discord9 <discord9@163.com>
Co-authored-by: Lei, HUANG <6406592+v0y4g3r@users.noreply.github.com>
2026-07-22 10:14:39 +00:00
fys 4d61471cc8 feat(json2): support JSON2 nested path fallback reads (#8540)
* feat: add nested read strategy for variant parent fallback

Signed-off-by: fys <fengys1996@gmail.com>

* refactor: drop nested fallback metadata from projection plan

Signed-off-by: fys <fengys1996@gmail.com>

* refactor: simplify nested parquet fallback planning

Signed-off-by: fys <fengys1996@gmail.com>

* add docs

Signed-off-by: fys <fengys1996@gmail.com>

* add Json2FallbackPlan

Signed-off-by: fys <fengys1996@gmail.com>

* add Json2FallbackDecoder

Signed-off-by: fys <fengys1996@gmail.com>

* test: add json2 nested fallback sqlness coverage

Signed-off-by: fys <fengys1996@gmail.com>

* add more sqlness test about json2 nested read

Signed-off-by: fys <fengys1996@gmail.com>

* refactor: split parquet reader nested stream helpers

Signed-off-by: fys <fengys1996@gmail.com>

* cache somethins in hot path

Signed-off-by: fys <fengys1996@gmail.com>

* chore: refine code

Signed-off-by: fys <fengys1996@gmail.com>

* minor change

Signed-off-by: fys <fengys1996@gmail.com>

* feat(mito2): align nested JSON2 parquet schemas

Signed-off-by: fys <fengys1996@gmail.com>

* refactor(mito2): default nested JSON reads to fallback

Signed-off-by: fys <fengys1996@gmail.com>

* chore: revert some unnecessary changes

Signed-off-by: fys <fengys1996@gmail.com>

* disallow JSON2 root fallback in parquet projection

Signed-off-by: fys <fengys1996@gmail.com>

* document JSON2 fallback root guard

* fix(json2): support variant-to-struct schema alignment

* refactor: simplify nested JSON schema alignment

* fix: cr

* fix: cr

* chore: add comment for null_on_json_type_mismatch

---------

Signed-off-by: fys <fengys1996@gmail.com>
2026-07-22 09:42:26 +00:00
discord9 a636dcf6b2 ci: gate releases on compat and query regression (#8469)
Signed-off-by: discord9 <discord9@163.com>
2026-07-22 09:19:16 +00:00
Lei, HUANG 036db3d1ec fix: ignore dropping marker during GC (#8588)
Signed-off-by: Lei, HUANG <mrsatangel@gmail.com>
2026-07-22 09:17:26 +00:00
discord9 9f5a11e82a fix(flow): lower routine batching messages to debug (#8592)
fix(flow): reduce expected batching log noise

Signed-off-by: discord9 <discord9@163.com>
2026-07-22 08:46:42 +00:00
Lei, HUANG d8f9bb4e3d test: stabilize ttl instant sqlness case (#8595)
Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-22 07:21:59 +00:00
discord9 8843dc9104 fix: stabilize remote analyze stage ordering (#8584)
* fix: stabilize remote analyze stage ordering

Signed-off-by: discord9 <discord9@163.com>

* Update src/query/src/dist_plan/merge_scan.rs

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Signed-off-by: discord9 <discord9@163.com>
Co-authored-by: Lei, HUANG <6406592+v0y4g3r@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-07-22 15:57:19 +08:00
discord9 4a0dd8f9bc fix(query): preserve bare plan names in analyze json (#8519)
Signed-off-by: discord9 <discord9@163.com>
2026-07-22 03:33:19 +00:00
Ning Sun d9b58edbb0 feat: add a region hook for gc cleanup (#8547)
* feat: add a region hook for gc cleanup

* chore: more tests and review fix

* fix: address review comments

* fix: address review comments
2026-07-22 03:27:04 +00:00
fys 598a412fbb feat: add mysql object store backend (#8560)
* feat: add mysql object store backend

Signed-off-by: fys <fengys1996@gmail.com>

* fix: code review

Signed-off-by: fys <fengys1996@gmail.com>

* add feature guard

---------

Signed-off-by: fys <fengys1996@gmail.com>
2026-07-21 13:53:27 +00:00
Lei, HUANG ed8a4990fe feat(flow): handle time_ranges in DirtyWindowRequest (#8582)
* feat(flow): handle time_ranges in DirtyWindowRequest

Bump greptime-proto to include the new `time_ranges` field on
DirtyWindowRequest (GreptimeTeam/greptime-proto#330) and mark the
corresponding aligned time windows as dirty in the batching engine,
in addition to the existing per-timestamp dirty marking.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* style(flow): fix doc comment spacing in align_time_window

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* test(flow): cover time_ranges in handle_mark_dirty_time_window

Verify a valid [start_inclusive, end_exclusive) range is aligned to
time window boundaries and stored with an explicit end, and that empty
or reversed ranges are skipped.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix(flow): union merged dirty windows with the larger end

Merging a bounded dirty range with a window contained in it (e.g.
[0s, 15s) with nested [5s, 10s), or an unbounded dirty window inside a
bounded range) previously assigned the contained window's upper bound,
shrinking the merged window and permanently dropping the tail range
from re-computation. Keep max(prev_upper, cur_upper) instead.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix(flow): clip bounded dirty ranges at the expire bound

merge_dirty_time_windows dropped every window whose start is before
expire_lower_bound, so a bounded dirty range crossing the bound (e.g.
[0s, 15s) with expire 10s) lost its still-live suffix [10s, 15s). Now
bounded ranges are dropped only when their end is at/before the expire
bound, and crossing ranges are clipped to the bound (which the caller
aligns to the time window boundary). Unbounded windows keep the
existing start-based behavior.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix(flow): fall back to full dirty on dirty-window alignment failure

An eval/alignment error previously aborted the per-task dirty-marking
closure, losing every dirty timestamp and range accumulated for that
task, while the RPC still returned Ok so the producer would not retry.
On alignment failure now log a warning and mark the whole task dirty
(set_dirty) instead, so the affected data is conservatively
recomputed.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* style(flow): apply rustfmt to new dirty-window merge tests

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* test(flow): cover time index units in dirty window marking

Document that DirtyWindowRequest timestamps/time_ranges are bare i64s
interpreted in the source table's time index native unit, and add a
test expressing the same [3s, 11s) range in second/millisecond/
microsecond/nanosecond units across four tables, asserting all align
to the same dirty window [0s, 15s).

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* chore: bump greptime-proto to 8127f179

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* fix(flow): return dirty-window alignment errors to callers

Do not acknowledge a DirtyWindowRequest when a time-windowed task cannot
align a timestamp or range. The previous conservative fallback used
set_dirty(), but that marker only represents a single epoch-start window
for time-windowed flows, so it could still lose the affected dirty
range. Propagate task errors through the join loop instead so producers
can retry.

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

* chore: update proto to commits on main

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>

---------

Signed-off-by: Lei, HUANG <ratuthomm@gmail.com>
2026-07-21 12:56:01 +00:00
shuiyisong d4d9e199e7 fix: enforce table-aware permissions across query and ingest protocols (#8552)
* feat: extend permission req check

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: cr issue

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: cr issue

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: preserve Prometheus query and write semantics

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: cr issue

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: cr issue

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: cr issue

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: cr issue

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: cr issue

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

---------

Signed-off-by: shuiyisong <xixing.sys@gmail.com>
2026-07-21 12:15:53 +00:00
shuiyisong 5065dfcf2f feat: grant creators access to newly created databases (#8566)
* feat: implement auto database acl after create database

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* chore: add comments

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* fix: timeout conversion:

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

* chore: remove register loaders parameter in ddl_manager initialization

Signed-off-by: shuiyisong <xixing.sys@gmail.com>

---------

Signed-off-by: shuiyisong <xixing.sys@gmail.com>
2026-07-21 11:29:49 +00:00
Yingwen 50bf494578 feat(mito2): expose adaptive batch APIs (#8578)
* chore: change tag check method

Signed-off-by: evenyag <realevenyag@gmail.com>

* feat(mito2): expose adaptive batch APIs

Signed-off-by: evenyag <realevenyag@gmail.com>

* fix(mito2): guard zero merge batch size

Signed-off-by: evenyag <realevenyag@gmail.com>

---------

Signed-off-by: evenyag <realevenyag@gmail.com>
2026-07-21 08:53:17 +00:00
Weny Xu e7c5767d52 fix: preserve leader cache configuration and record cache hits (#8576)
Signed-off-by: WenyXu <wenymedia@gmail.com>
2026-07-21 08:52:38 +00:00
discord9 56addd0623 fix: stream remote analyze metrics while pending (#8405)
* fix: stream remote analyze metrics while pending

Signed-off-by: discord9 <discord9@163.com>

* test: verify flight metrics preserve pending batch

Signed-off-by: discord9 <discord9@163.com>

* fix: preserve direct SST perf queries in plans

Signed-off-by: discord9 <discord9@163.com>

* fix: bind flight metrics capability to query

Signed-off-by: discord9 <discord9@163.com>

---------

Signed-off-by: discord9 <discord9@163.com>
2026-07-21 04:17:50 +00:00
Ning Sun e3d2864947 test: gate pluginoption test for oss repo only (#8569) v1.2.0-d1e61a4ad-20260720-1784560249 2026-07-20 15:27:05 +00:00
Weny Xu d1e61a4ad2 fix(mito): chunk manifest object writes (#8567)
Signed-off-by: WenyXu <wenymedia@gmail.com>
2026-07-20 14:19:48 +00:00
dependabot[bot] 6f13af8647 chore(deps): bump serde_with from 3.1.0 to 3.21.0 (#8565)
Bumps [serde_with](https://github.com/jonasbb/serde_with) from 3.1.0 to 3.21.0.
- [Release notes](https://github.com/jonasbb/serde_with/releases)
- [Commits](https://github.com/jonasbb/serde_with/compare/v3.1.0...v3.21.0)

---
updated-dependencies:
- dependency-name: serde_with
  dependency-version: 3.21.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 12:59:28 +00:00
Ning Sun 5b69770dbc refactor: add field id and extension type to histogram (#8528)
* refactor: add field id and extension type to histogram

* chore: revert histogram check

* chore: lint

* test: add test coverage for maybe_update_schema

* feat: calculate sub field id from parent column id

* refactor(mito2): guard histogram sub-field ids and cover parquet footer

Address review on #8528:

- native_histogram: derive sub-field ids with checked arithmetic. The SST
  writer now surfaces a new InvalidNativeHistogramSubfield error when a
  sub-field id cannot be resolved (unknown name or i32 overflow) instead of
  silently dropping the id or wrapping. maybe_wrap_schema is now fallible.
- sst: add parquet writer/footer round-trip tests asserting the
  greptime.histogram extension and nested PARQUET:field_id (incl. list
  elements) survive on disk, and a non-canonical struct is left untouched.
- sst: fix a broken rustdoc link to stamp_native_histogram_subfield_ids.

Signed-off-by: Ning Sun <sunning@greptime.com>

* fix: return error when fail to get i32 column id

---------

Signed-off-by: Ning Sun <sunning@greptime.com>
2026-07-20 12:18:34 +00:00