2667 Commits

Author SHA1 Message Date
Amir Fathi 56e007da9b fix(wren): report a validation error for non-scalar model/view names (#2681) 2026-08-27 11:28:23 +08:00
Harry-Sun 11184dc69d fix(wren): mark truncated values in the skipped-row report (#2675) 2026-08-26 11:02:16 +08:00
Ray Tien 7ca6c77118 fix(wren): preserve wide MySQL and Doris decimals (#2657) 2026-08-26 11:00:24 +08:00
Jax Liu c8815294a6 ci(release): give the bindings a release trigger after a core release (#2663) 2026-08-26 10:43:27 +08:00
Amir Fathi a8e8d04013 fix(skills): wrap generate-mdl SKILL.md's relationships.yml example under the required key (#2676) 2026-08-26 10:19:06 +08:00
Bartok 5cf36cd7aa fix(cube): load/validate like views; fail loud on mdl.json (#2668) 2026-08-25 11:03:38 +08:00
Jax Liu f2841bcbdf refactor(core): correct the aliased-scan comments the shortcut invalidated (#2648)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 16:29:57 +08:00
William Yang a8a07788a5 fix(wren-core): resolve relationship handles by the model they point at (#2661) 2026-08-21 16:14:31 +08:00
Bartok d48498fd55 fix(context): normalise model columns in load_models (#2614)
Co-authored-by: Jax Liu <liugs963@gmail.com>
2026-08-21 14:40:44 +08:00
Jax Liu ce9513d68a fix(wren): accept only read-only SELECT statements in the query path (#2679)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 17:10:23 +08:00
Ray Tien 2e87902ed6 fix(memory): validate imported query pair field types (#2656) 2026-08-19 11:02:06 +08:00
github-actions[bot] 7830cc746c chore(main): release wren 0.13.3 (#2620)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
wren-v0.13.3
2026-08-18 13:19:06 +08:00
github-actions[bot] f40704d5d6 chore(wren): bump wren-core-py to 0.7.5 (#2678)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-18 10:47:07 +08:00
github-actions[bot] 8fd0d75cbd chore(main): release wren-core-py 0.7.5 (#2674)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
wren-core-py-v0.7.5
2026-08-18 10:13:47 +08:00
Peter 28920e7e26 perf(core-py): remove per-context call lock for same-context concurrency (#2666) 2026-08-17 15:41:18 +08:00
Amir Fathi f29b5b0a01 fix(memory): skip unnamed cubes/measures/dimensions in schema_indexer (#2665) 2026-08-17 14:17:00 +08:00
Ray Tien 6db8bed56a fix(wren): prevent context upgrade path traversal (#2649) 2026-08-17 13:39:26 +08:00
Bartok b56d4da16b fix(context): harden description checks for bad MDL rows (#2616) 2026-08-17 13:18:47 +08:00
Amir Fathi 7f7370e4e9 fix(wren): classify bare TimeoutError as DatabaseTimeoutError in WrenEngine (#2654) 2026-08-12 10:41:49 +08:00
github-actions[bot] 87fb60ffba chore(main): release wren-core-py 0.7.4 (#2662)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
wren-core-py-v0.7.4
2026-08-12 09:37:17 +08:00
Jax Liu 92cdf43952 fix(core-py): declare the engine version the bindings build against (#2659) 2026-08-11 17:29:17 +08:00
Bartok ec85b1e158 refactor(snowflake): strip trailing semicolon on unlimited query path for connector consistency (#2593)
Co-authored-by: Bartok9 <bartok9@users.noreply.github.com>
2026-08-11 10:48:42 +08:00
Bartok b1387d89ec refactor(trino): strip trailing semicolon on unlimited query path for connector consistency (#2592)
Co-authored-by: Bartok9 <bartok9@users.noreply.github.com>
2026-08-11 10:38:50 +08:00
Bartok dae7076ccc fix(genbi): harden non-dict apps.yml entries in list/get/register (#2587)
Co-authored-by: Bartok9 <bartok9@users.noreply.github.com>
2026-08-11 10:22:53 +08:00
github-actions[bot] 2dd0824179 chore(main): release wren-rust-core libraries (#2641)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
wren-core-base-v0.3.1 wren-manifest-macro-v0.3.1 wren-semantic-core-v0.3.1
2026-08-11 10:18:48 +08:00
Bartok d23460893d fix(context): harden relationships load + validate like views (#2613)
Co-authored-by: Bartok9 <bartok9@users.noreply.github.com>
2026-08-10 11:58:27 +08:00
Ray Tien 2c264e56ee fix(wren): preserve unconstrained PostgreSQL NUMERIC precision (#2655) 2026-08-10 10:49:29 +08:00
Bartok 9a0f032430 refactor(mssql): strip trailing semicolon on unlimited query path for connector consistency (#2633)
Signed-off-by: Bartok9 <danielrpike9@gmail.com>
2026-08-07 14:08:46 +08:00
Jax Liu 9bdae39c99 fix(context): filter non-mapping entries in _load_views_v1 (#2604)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 11:44:12 +08:00
Peter f92e681fd5 fix(wren): bound the session-context cache to 32 LRU entries (#2628) 2026-08-07 09:51:44 +08:00
Amir Fathi 1742175dae refactor(core): resolve goldmedal's review follow-ups on the aliased-scan shortcut
- analyze_subquery_alias_model's ModelPlanNode branch is now unreachable
  (shortcut_aliased_table_scan intercepts every SubqueryAlias -> TableScan
  in f_down before the nested shape it rebuilds can be produced); turned
  into an internal_err! defense-in-depth check instead of silent dead code
- reworded shortcut_aliased_table_scan's doc comment, which read as if the
  old bottom-up path it replaces was still in service
- restated the rule doc's step-1/step-2 traversal-symmetry invariant in the
  narrower form that actually holds now: a skipped subtree is safe only
  because a bare TableScan can never carry a subquery
2026-08-06 15:41:35 +08:00
Amir Fathi 73190b23d1 refactor(core): drop shortcut_taken, always run the bottom-up rewrite
goldmedal verified that once the shortcut fires, the resulting node
(SubqueryAlias -> Extension(ModelPlanNode)) falls into
analyze_model_internal's catch-all arm and is only reconstructed via
SubqueryAlias::try_new, a no-op. Confirmed independently: full 149-test
suite passes with the field removed and f_up calling
analyze_model_internal unconditionally, cargo clippy -D warnings clean,
cargo fmt --check clean.
2026-08-06 15:41:35 +08:00
Amir Fathi a038847ad4 refactor(core): address review feedback on aliased model scan shortcut
- Update the stale comment on test_clac_unreferenced_column_pruned_not_denied:
  it described the throwaway-plan mechanism this PR deletes.
- Add snapshot assertions (assert_snapshot!) to the new test so it asserts the
  no-behavior-change claim, not just the build-call count.
- Cover the two branches the new test missed: count(*) on an aliased model
  (the visited_dataset fallback) and a join of two aliased models (shortcut_taken
  across siblings).
- Drop the needless SubqueryAlias rebuild on non-matching paths in
  shortcut_aliased_table_scan; match on &plan first and return the original
  Transformed::no(plan) on every early exit.
- Comment the Jump/f_up invariant shortcut_taken depends on.
- Extract the required-columns/visited_dataset-fallback lookup duplicated
  across shortcut_aliased_table_scan, analyze_table_scan and
  analyze_subquery_alias_model into resolve_required_fields.
- Fix the counter's doc comment: the real dependency is #[tokio::test]'s
  current-thread runtime, not "one thread per test".

Addresses goldmedal's review on PR #2612.
2026-08-06 15:41:35 +08:00
Amir Fathi 0fb85d1709 refactor(core): avoid throwaway ModelPlanNode build for aliased model scans
For a model scanned through a table alias (FROM customer AS e), the
bottom-up ModelAnalyzeRule walk visits the bare TableScan before its
SubqueryAlias parent. Required columns are keyed by the alias, so this
first pass finds none and builds a ModelPlanNode via the wildcard-
expansion path; analyze_subquery_alias_model then discards it and
rebuilds the node correctly once the alias is known. The first build
runs the full RLAC/CLAC parsing for nothing.

PR #2449 already fixed the correctness bug this caused (the throwaway
build was denying access to columns under column-level security instead
of pruning them); the wasted build itself remained.

This adds a pre-order TreeNodeRewriter pass that recognizes
SubqueryAlias -> TableScan for a model directly and builds the
ModelPlanNode once, with the alias's real required columns, skipping
the discarded intermediate build. Everything else keeps using the
original bottom-up analyze_model_internal pass.

Fixes #2451
2026-08-06 15:41:35 +08:00
Jasmine Nguyen bcf765458c docs: Refine readme (#2639) 2026-08-06 10:40:50 +08:00
Bartok 4483ce8c7e fix(spark): apply limit via DataFrame.limit before toPandas (#2574) 2026-08-05 11:06:17 +08:00
Bartok 961588991e refactor(connector): centralize LIMIT coercion (#2624) 2026-08-05 10:36:27 +08:00
Peter d754985ffe fix(core): keep RLAC cycle-detection state per analyzer invocation (#2619) 2026-08-05 10:12:31 +08:00
Jax Liu 74bf59e1d8 docs(core): align quickstart with the jaffle_shop tables it actually builds (#2632)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 13:36:33 +08:00
Bartok 4cd4bf8d7e fix(genbi): reject non-object Vercel API JSON (#2582) 2026-07-31 12:19:30 +08:00
GiacomoZGW 60ee894767 fix(wren): validate import paths before force cleanup (#2580)
Co-authored-by: GiacomoZGW <dmitryprozorova145@gmail.com>
2026-07-31 11:25:09 +08:00
Peter e19cb665eb test(core-py): document and pin the physical-table visibility contract (#2576) 2026-07-31 11:01:41 +08:00
Amir Fathi fc4ebf0113 fix(wren-cli): surface skipped non-mapping rows in parse/translate-types (#2570)
Co-authored-by: Jax Liu <liugs963@gmail.com>
2026-07-31 10:45:14 +08:00
Bartok 32d76bfdab fix(memory): skip non-dict rows in extract_schema_items/describe (#2586) 2026-07-30 10:36:15 +08:00
Bartok 73c1255439 fix(memory): reject non-list relationship models in schema_indexer (#2605) 2026-07-29 16:58:33 +08:00
github-actions[bot] 99f1dbd15d chore(main): release wren-pydantic 0.2.1 (#2428)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
wren-pydantic-v0.2.1
2026-07-29 09:58:20 +08:00
github-actions[bot] d236a2bfe1 chore(main): release wren-langchain 0.2.1 (#2427)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
wren-langchain-v0.2.1
2026-07-29 09:34:18 +08:00
Jax Liu 3615a8d734 deps(sdk): raise the wrenai floor to 0.13.1 (#2610)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-29 09:29:15 +08:00
Peter 094d84dc48 chore: exclude Markdown from ruff format scope (#2589) 2026-07-28 21:02:32 +08:00
github-actions[bot] 8f5b04339d chore(main): release wren 0.13.2 (#2554)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
wren-v0.13.2
2026-07-28 20:51:13 +08:00