LFC
697cc5fa29
fix(json): fix JSONPath panic with jsonb 0.5.6 (follow-up to #9192 ) ( #9228 )
...
* fix(json): upgrade jsonb to fix unterminated JSONPath panic
Signed-off-by: luofucong <luofc@foxmail.com >
* fix(json): align integer extraction with JSON2 conversions
Signed-off-by: luofucong <luofc@foxmail.com >
* style: format jsonb dependency declaration
Signed-off-by: luofucong <luofc@foxmail.com >
* fix(otlp): report concrete unsupported JSONB type names
Signed-off-by: luofucong <luofc@foxmail.com >
---------
Signed-off-by: luofucong <luofc@foxmail.com >
2026-09-18 04:55:02 +00:00
LFC
aacf04cf6e
feat(otlp): add trace v2 ingestion with JSON2 attributes ( #9192 )
...
Signed-off-by: luofucong <luofc@foxmail.com >
2026-09-17 10:08:45 +00:00
discord9 and Ning Sun
94d7e2c7fc
feat!: upgrade DataFusion to 55 ( #8555 )
...
* feat!: upgrade DataFusion dependencies to 55
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* refactor: migrate DataFusion 55 APIs
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: preserve table function planning behavior
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: preserve PostgreSQL query compatibility
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: preserve distributed execution plan behavior
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: cover DataFusion 55 behavior regressions
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: update DataFusion 55 SQLness expectations
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: complete DataFusion 55 test API migration
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: address DataFusion 55 CI regressions
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: address remaining DataFusion 55 regressions
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: adapt latest base code to DataFusion 55
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: normalize environment-specific DataFusion 55 plans
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: align final DataFusion 55 expectations
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: isolate DataFusion 55 regression cases
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: preserve empty result schema in timestamp widening
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: preserve JSON source column order
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* chore: use released DataFusion 55 integrations
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: adapt latest execution plan mock to DataFusion 55
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: pin DataFusion recursive schema and date repairs
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix(promql): align dictionary temporality match keys
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: retain Greptime DataFusion fork behaviors on version 55
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: restore ordinary function error expectations
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: refresh distributed count compatibility plan
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix(query): adapt last-row cast hint to DataFusion 55
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: refresh instant last-row empty results for Arrow 59
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* style: simplify DataFusion expression visitor imports
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: restore sorting and PostgreSQL column-order assertions
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix(function): restore primitive numeric coercion signatures
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* refactor(function): share geo integer signature types
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: cover timestamp widening overflow boundaries
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: fix decimal coercion regression imports
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix(function): preserve scalar count_hash NULL state semantics
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: simplify decimal clamp case type inference
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: retain historical count_hash wrapper result
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: restore timestamp widening equality and IN pruning
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: carry upstream aggregate dynamic filter correctness fix
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: carry upstream null and predicate simplification fixes
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: restore baseline JSON ordering expectations
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: restore histogram JSON ordering expectations
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: refresh empty PromQL range result schemas
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: align native timestamp plan with DF55 decimal display
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: refresh native timestamp SQLness results for DF55
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: regenerate NULL sample empty result headers for DF55
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: use DF55 child replacement API in timestamp regressions
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: expose pushed scan dynamic filters to DF55 producers
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: encode string-backed PostgreSQL OID aliases in binary results
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: verify REGPROC binary and text over PostgreSQL protocol
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: register real PostgreSQL catalogs in server fixtures
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: complete DF55 expression inventories for custom query plans
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: correct RangeSelect expression fixture and column identities
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* ci: wait for Kafka WAL helper deployment rollout
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* test: update custom storage empty result headers
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: require exact row counts in scan statistics
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
* fix: suppress deprecated partition_statistics warning in test
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
---------
Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com >
Co-authored-by: Ning Sun <sunng@protonmail.com >
2026-09-15 11:42:38 +00:00
dennis zhuang
4dd92c774e
feat: add json_object function and use it in the entity-graph derivation ( #8870 )
...
* feat: add json_object scalar function
Builds a JSONB object from interleaved (key, value, ...) arguments, like
MySQL's JSON_OBJECT. Values are written into the binary directly, so
JSON-hostile characters (quotes, backslashes, control characters) need no
text-level escaping. Keys must be non-NULL strings; values may be strings,
numbers, booleans, or NULL (JSON null).
Signed-off-by: Dennis Zhuang <killme2008@gmail.com >
* fix: build entity-graph JSON objects with json_object
The derivation assembled entity_id_attrs and descriptive by concatenating a
JSON text and parsing it, escaping only backslash and double quote in runtime
values. A label containing a control character (e.g. a newline) produced
unparseable text and failed the whole semantic_entities scan instead of one
attribute. json_object assembles the JSONB binary directly from the value
columns, so no text escaping is involved; NULL-to-'' stays at the call site.
Signed-off-by: Dennis Zhuang <killme2008@gmail.com >
* chore: trim comments and fold duplicate test coverage
Signed-off-by: Dennis Zhuang <killme2008@gmail.com >
* fix: json_object() returns an empty object; narrow values to integers and floats
MySQL's JSON_OBJECT allows an empty pair list, so the signature accepts zero
arguments and the row count falls back to number_rows. Decimals stay rejected
instead of casting to Float64: JSONB numbers (i64/u64/f64) cannot represent
them exactly and a silent precision loss is worse than an explicit cast.
Signed-off-by: Dennis Zhuang <killme2008@gmail.com >
* chore: document key-to-string conversion and align test naming
Keys follow MySQL JSON_OBJECT: any castable type is converted to string.
Rustdoc and the cast-failure message now say so, with a numeric-key test.
Test names take the module-conventional test_ prefix.
Signed-off-by: Dennis Zhuang <killme2008@gmail.com >
---------
Signed-off-by: Dennis Zhuang <killme2008@gmail.com >
2026-08-14 08:24:50 +00:00
Whis Liao
f639a2099d
feat(function): add json_object_keys scalar function ( #8722 )
...
Expose JSON object key listing for outermost objects, with sqlness coverage.
2026-08-04 02:31:30 +00:00
Ning Sun and Ruihang Xia
9b1288f66a
feat: add function rewrite rule for json_get with cast ( #7631 )
...
* feat: initial function rewriter for json_get
* feat: make sure rewrite rule is applied
* feat: keep analyzer's default rules
* feat: implement rewriter for arrow_cast
* test: add unit test for tht rewriter
* chore: format
* refactor: extract some more functions
* Apply suggestion from @waynexia
Co-authored-by: Ruihang Xia <waynestxia@gmail.com >
---------
Co-authored-by: Ruihang Xia <waynestxia@gmail.com >
2026-03-09 02:39:48 +00:00
Ning Sun
079ee8615f
feat: UDF json_get with user specified return type ( #7554 )
...
* feat: add return_field_from_args
* feat: add JsonGetWithType
* port json_get_float and json_get_bool to new implementation, add
json_get with third argument accepting a scalar value for type.
* fix: lint fix
* chore: add sqlness tests
* chore: update tests
2026-01-26 09:53:45 +00:00
LFC
c02754b44c
feat: udf json_get_object ( #7241 )
...
Signed-off-by: luofucong <luofc@foxmail.com >
2025-11-21 04:50:38 +00:00
Kaifeng Zheng
1a02fc31c2
fix: json_path_exists null results ( #4881 )
...
* fix: result of nulls
* update test result
* fix null behaviors, add null tests
* update NULL tests
* error handler when parsing json_path
* change the logic to: items' datatype in the input arrays are all the same.
* remove a comment
* refactor: better logic
* drop unnecessary err check
* added an error test case
2024-11-08 03:01:45 +00:00
Kaifeng Zheng
4e9c251041
feat: add json_path_match udf ( #4864 )
...
* add json_path_match udf
* sql tests for json_path_match
* fix clippy & comment
* fix null value behavior
* added null tests
* adjust function's behavior on nulls
* update test cases
* fix null check of json
2024-10-25 03:13:34 +00:00
Yohan Wal
288fdc3145
feat: json_path_exists udf ( #4807 )
...
* feat: json_path_exists udf
* chore: fix comments
* fix: caution when copy&paste QAQ
2024-10-10 14:15:34 +00:00
Yohan Wal
f73fb82133
feat: add respective json_is UDFs for JSON type ( #4726 )
...
* feat: add respective json_is UDFs
* refactor: rename to_json to parse_json
* chore: happy clippy
* chore: some rename
* fix: small fixes
2024-09-18 11:07:30 +00:00