Ruihang Xia
03f2fa219d
feat: optimizer rule for windowed sort ( #4874 )
...
* basic impl
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* implement physical rule
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* feat: install windowed sort physical rule and optimize partition ranges
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* add logs and sqlness test
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* feat: introduce PartSortExec for partitioned sorting
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* tune exec nodes' properties and metrics
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* clean up
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix typo
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* debug: add more info on very wrong
* debug: also print overlap ranges
* feat: add check when emit PartSort Stream
* dbg: info on overlap working range
* feat: check batch range is inside part range
* set distinguish partition range param
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* chore: more logs
* update sqlness
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* tune optimizer
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* clean up
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix lints
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix windowed sort rule
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix: early terminate sort stream
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* chore: remove min/max check
* chore: remove unused windowed_sort module, uuid feature and refactor region_scanner to synchronous
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* chore: print more fuzz log
* chore: more log
* fix: part sort should skip empty part
* chore: remove insert logs
* tests: empty PartitionRange
* refactor: testcase
* docs: update comment&tests: all empty
* ci: enlarge etcd cpu limit
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
Co-authored-by: discord9 <discord9@163.com >
Co-authored-by: evenyag <realevenyag@gmail.com >
2024-10-29 07:46:05 +00:00
Yingwen
3e17c09e45
feat: skip caching uncompressed pages if they are large ( #4705 )
...
* feat: cache each uncompressed page
* chore: remove unused function
* chore: log
* chore: log
* chore: row group pages cache kv
* feat: also support row group level cache
* chore: fix range count
* feat: don't cache compressed page for row group cache
* feat: use function to get part
* chore: log whether scan is from compaction
* chore: avoid get column
* feat: add timer metrics
* chore: Revert "feat: add timer metrics"
This reverts commit 4618f57fa2ba13b1e1a8dec83afd01c00ae4c867.
* feat: don't cache individual uncompressed page
* feat: append in row group level under append mode
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* chore: fetch pages cost
* perf: yield
* Update src/mito2/src/sst/parquet/row_group.rs
* refactor: cache key
* feat: print file num and row groups num in explain
* test: update sqlness test
* chore: Update src/mito2/src/sst/parquet/page_reader.rs
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
Co-authored-by: Ruihang Xia <waynestxia@gmail.com >
2024-09-10 11:52:16 +00:00
Yingwen
f382a7695f
perf: reduce lock scope and improve log ( #4453 )
...
* feat: refine logs for scan
* feat: improve build parts and unordered scan metrics
* feat: change to debug log
* fix: release lock before reading part
* test: replace region id
* test: fix sqlness
* chore: add todo
Co-authored-by: dennis zhuang <killme2008@gmail.com >
---------
Co-authored-by: dennis zhuang <killme2008@gmail.com >
2024-07-31 04:07:34 +00:00
Ruihang Xia
16075ada67
feat: impl optimizer rule to handle last_value case ( #4357 )
...
* feat: impl optimizer rule to handle last_value case
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* rename file
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* update sqlness result
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* Update src/query/src/optimizer/scan_hint.rs
Co-authored-by: Jeremyhi <jiachun_feng@proton.me >
* split methods
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
Co-authored-by: Jeremyhi <jiachun_feng@proton.me >
2024-07-12 14:36:23 +00:00
Ruihang Xia
a7aa556763
feat: output multiple partition in MergeScanExec ( #4227 )
...
* feat: output multiple partition in MergeScanExec
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix range manipulate
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
2024-06-28 13:45:22 +00:00
Ruihang Xia
fce65c97e3
feat: make RegionScanner aware of PartitionRange ( #4170 )
...
* define PartitionRange
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* add optimizer rule
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* implement interfaces
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* impl aggr stream
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* add fallback method
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix tests
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix tests
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix typo
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* update sqlness result
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* add document and rename struct
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* add more comments
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix typo
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
2024-06-21 09:54:22 +00:00
Yingwen
fe74efdafe
feat: Implement memtable range ( #4162 )
...
* refactor: RangeBase
* feat: memtable range
* feat: scanner use mem range
* feat: remove base from mem range context
* feat: impl ranges for memtables
* chore: fix warnings
* refactor: make predicate cheap to clone
* refactor: MemRange -> MemtableRange
* feat: pub empty memtable to fix warnings
* test: fix sqlness result
2024-06-18 22:25:19 +00:00
Yingwen
65f8b72d34
feat: Implement RegionScanner for SeqScan ( #4060 )
...
* feat: ordered builder wip
* feat: impl RegionScanner for SeqScan
* feat: implement scan_partition and build_stream
* chore: return SeqScan as RegionScanner
* fix: group parts
* feat: split parts
* chore: reader metrics
* chore: metrics
* chore: remove unused codes
* chore: support holding a group of ranges in ScanPart
* feat: group ScanParts to ScanParts
* feat: impl SeqScanner again
* chore: observe build cost in ScannerMetrics
* chore: fix compiler warnings
* style: fix clippy
* docs: update config docs
* chore: forward DisplayAs to scanner
* test: update sqlness tests
* chore: update debug fmt
* chore: custom debug for timestamp
fix test compiling issue with common-macro when running
cargo nextest -p common-time
* chore: update debug format
* feat: update fmt for scan part
* chore: fix warning
* fix: sanitize parallelism
* feat: split parts
* test: fix config api test
* feat: update logs
* chore: Revert "chore: remove unused codes"
This reverts commit b548b30a01eeded59b1a0a8d89f9293ca63afc41.
* chore: Revert "docs: update config docs"
This reverts commit a7997e78d6ddcf635560574de8c1948c495bdd12.
* feat: each partition scan files in parallel
* test: fix config api test
* docs: fix typo
* chore: address comments, simplify tests
* feat: global semaphore
* feat: always spawn task
* chore: simplify default explain output format
* handle output partiton number is 0
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix typo
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
Co-authored-by: Ruihang Xia <waynestxia@gmail.com >
2024-06-12 08:21:30 +00:00
Ruihang Xia
c2218f8be8
build(deps): bump datafusion 20240528 ( #4061 )
...
* build(deps): bump datafusion 20240528
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* another update
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* update expected sqlness result
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix first/last value
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* reformat comment
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix remaining errors
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* revert toml format
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix pyo3 feature
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* remove dead code
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* Apply suggestions from code review
Co-authored-by: Jeremyhi <jiachun_feng@proton.me >
* format file
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
Co-authored-by: Jeremyhi <jiachun_feng@proton.me >
2024-06-01 14:03:00 +00:00
Yingwen
179c8c716c
feat: Adds RegionScanner trait ( #3948 )
...
* feat: define region scanner
* feat: single partition scanner
* feat: use single partition scanner
* feat: implement ExecutionPlan wip
* feat: mito engine returns single partition scanner
* feat: implement DisplayAs for region server
* feat: dummy table provider use handle_partitioned_query()
* test: update sqlness test
* feat: table provider use ReadFromRegion
* refactor: remove StreamScanAdapter
* chore: update lock
* style: fix clippy
* refactor: remove handle_query from the RegionEngine trait
* chore: address CR comments
* refactor: rename methods
* refactor: rename ReadFromRegion to RegionScanExec
2024-05-20 11:52:00 +00:00
Ruihang Xia
aec5cca2c7
feat: support distributed EXPLAIN ANALYZE ( #3908 )
...
* feat: fetch and pass per-plan metrics
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* impl DistAnalyzeExec
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* update sqlness results
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix clippy
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix typo
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix typo again
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* Update src/query/src/analyze.rs
Co-authored-by: Jeremyhi <jiachun_feng@proton.me >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
Co-authored-by: Jeremyhi <jiachun_feng@proton.me >
2024-05-10 12:31:29 +00:00
Ruihang Xia
e84b1eefdf
perf: optimize count(*) ( #3845 )
...
* perf: optimize count(*)
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fallback to count(1) for temporary table
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* handle alias expr in range plan
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* handle subquery alias
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* rename file
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
2024-04-30 10:10:11 +00:00
Ruihang Xia
a0f4881c6e
feat: physical optimizer RemoveDuplicate to remove duplicate exec plans ( #3839 )
...
* feat: physical optimizer RemoveDuplicate to remove duplicate exec plans
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* update document
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* update sqlness results
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
2024-04-30 03:13:39 +00:00
LFC
314f2704d4
build(deps): update datafusion to latest and arrow to 51.0 ( #3661 )
...
* chore: update datafusion
* update sqlness case of time.sql
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix: adjust range query partition
* fix: hisogram incorrect result
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix: ignore filter pushdown temporarily
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix: update limit sqlness result
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix: histogram with wrong distribution
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix: update negative ordinal sqlness case
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* feat: bump df to cd7a00b
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* resolve conflicts
* ignore test_range_filter
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix promql exec panic
* fix "select count(*)" exec error
* re-enable the "test_range_filter" test since the filter push down seems not necessary to be removed
* fix: range query schema error
* update sqlness results
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* resolve conflicts
* update datafusion, again
* fix pyo3 compile error, and update some sqlness results
* update decimal sqlness cases
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* fix: promql literal
* fix udaf tests
* fix filter pushdown sqlness tests
* fix?: test_cast
* fix: rspy test fail due to datafusion `sin` signature change
* rebase main to see if there are any failed tests
* debug ci
* debug ci
* debug ci
* enforce input partition
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
* debug ci
* fix ci
* fix ci
* debug ci
* debug ci
* debug ci
* fix sqlness
* feat: do not return error while creating a filter
* chore: remove array from error
* chore: replace todo with unimplemented
* Update src/flow/clippy.toml
Co-authored-by: Yingwen <realevenyag@gmail.com >
---------
Signed-off-by: Ruihang Xia <waynestxia@gmail.com >
Co-authored-by: Ruihang Xia <waynestxia@gmail.com >
Co-authored-by: WUJingdi <taylor-lagrange@qq.com >
Co-authored-by: discord9 <discord9@163.com >
Co-authored-by: evenyag <realevenyag@gmail.com >
Co-authored-by: tison <wander4096@gmail.com >
2024-04-18 12:07:18 +00:00
Eugene Tolbakov
bbea651d08
feat(promql): parameterize lookback ( #3630 )
...
* feat(promql): parameterize lookback
* chore(promql): address CR, adjusted sqlness
* chore(promql): fmt
* chore(promql): fix accidental removal
* fix(promql): address CR
* fix(promql): address CR
* feat(promql): add initial lookback parameter grpc support
* fix: update greptime-proto revision
* chore: restore accidental removal
2024-04-15 09:11:21 +00:00
Eugene Tolbakov
14267c2aed
feat(tql): add initial support for start,stop,step as sql functions ( #3507 )
...
* feat(tql): add initial support for start,stop,step as sql functions
* fix(tql): remove unwraps, adjust fmt
* fix(tql): address taplo issue
* feat(tql): update parse_tql_query logic
* fix(tql): change query parsing logic to use parser instead of delimiter
* fix(tql): add timestamp function support, add sqlness tests
* fix(tql): add lookback optional param for tql eval
* fix(tql): adjust tests for now() function
* fix(tql): introduce the tqlerror to differentiate failures on parsing, evaluation and simplification stages
* fix(tql): add tests for explain/analyze
* feat(tql): add lookback support for explain/analyze, update tests
* feat(tql): add more sqlness tests
* chore(tql): extract common logic for eval, analyze and explain into a single function
* feat(tql): address CR points
* feat(tql): use snafu for tql errors, add more docs
* feat(tql): address CR points
2024-03-29 06:37:25 +00:00
Eugene Tolbakov
8609977b52
feat: add verbose support for tql explain/analyze ( #3390 )
...
* feat: add verbose support for tql explain/analyze
* chore: apply clippy suggestions
* feat: add sqlness tests
* fix: adjust sqlness replace rules
* fix: address CR (move tql explain/analyze inside common folder)
* fix: address CR(improve comments to indicate that verbose is optional)
2024-03-02 11:18:22 +00:00