Skip to content

Conversation

@fengttt
Copy link
Contributor

@fengttt fengttt commented Jan 7, 2026

User description

What type of PR is this?

  • API-change
  • BUG
  • Improvement
  • Documentation
  • Feature
  • Test and CI
  • Code Refactoring

Which issue(s) this PR fixes:

issue #22761

Move agg state from AoS to SoA

What this PR does / why we need it:

This supercedes #23420


PR Type

Enhancement, Bug fix


Description

  • Refactor aggregation state storage from Array-of-Structures to Structure-of-Arrays (SoA) layout

  • Implement skiplist-based argument storage for distinct aggregations

  • Reimplement sum and avg functions using new aggregation framework

  • Add support for decimal types in sum/avg operations

  • Fix memory management and spill handling in group operations


Diagram Walkthrough

flowchart LR
  A["Old AoS State<br/>Generic Type S"] -->|Refactor| B["New SoA State<br/>Vector-based"]
  B -->|For Distinct| C["Skiplist Arena<br/>Argument Storage"]
  B -->|For Non-Distinct| D["Direct Vectors<br/>Count + Sum"]
  E["Sum/Avg Functions"] -->|Use| B
  E -->|Support| F["Int/Float/Decimal<br/>Types"]
Loading

File Walkthrough

Relevant files
Enhancement
12 files
aggState.go
Refactor aggregation state to SoA with skiplist storage   
+544/-381
sumavg2.go
Implement sum and avg using new framework                               
+487/-0 
count2.go
Update count functions for new state layout                           
+37/-46 
types.go
Register sum and avg in special aggregations                         
+4/-0     
register.go
Add registration functions for sum and avg                             
+12/-0   
encoding.go
Add int16/uint16/uint32 read/write helpers                             
+61/-16 
decimal.go
Add decimal conversion helper functions                                   
+21/-1   
vector.go
Add null append and improve vector free handling                 
+10/-1   
ptrlen.go
Add Replace and Free methods to PtrLen                                     
+34/-0   
unsafe.go
Add UnsafeFromBytes helper function                                           
+4/-0     
list_agg.go
Update sum/avg to use new framework functions                       
+20/-6   
special.go
Add registration wrappers for sum and avg                               
+8/-0     
Bug fix
2 files
types.go
Remove unused int32/uint32 conversion functions                   
+6/-6     
helper.go
Fix spill memory release timing                                                   
+3/-4     
Tests
9 files
mpool_test.go
Add test for PtrLen Replace functionality                               
+26/-0   
count2_test.go
Add skiplist validation checks to tests                                   
+4/-1     
time_window.result
Update test results for new aggregation behavior                 
+23/-9   
window.result
Update window function test results                                           
+2/-12   
window.sql
Add issue markers to window tests                                               
+3/-1     
boundary_comprehensive.result
Update overflow error message format                                         
+2/-2     
func_datetime_utc_timestamp.result
Update timestamp calculation test result                                 
+1/-1     
table_func_metadata_scan.result
Update overflow error message format                                         
+1/-1     
bit.result
Update bit type aggregation test results                                 
+2/-4     
Documentation
1 files
repl.go
Update copyright year to 2026                                                       
+1/-1     
Additional files
9 files
encoding_test.go +0/-9     
reuse.go +0/-75   
avg.go +0/-275 
size_test.go +0/-15   
sum.go +0/-336 
sum_test.go +0/-605 
types.go +0/-4     
sum.go +0/-118 
sum_test.go +0/-48   

@qodo-code-review
Copy link

qodo-code-review bot commented Jan 7, 2026

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
Unbounded length allocation

Description: ReadSizeBytesToBuf allocates a new buffer based directly on the int32 length read from an
io.Reader without validating that the size is non-negative and within a sane upper bound,
enabling memory-exhaustion or panic (negative/overflow length) denial-of-service if the
reader is influenced by untrusted/corrupted input.
encoding.go [801-821]

Referred Code
func ReadSizeBytesToBuf(r io.Reader, buf []byte, offset int32) (int32, []byte, error) {
	sz, err := ReadInt32(r)
	if err != nil || sz == 0 {
		return 0, buf, err
	}

	if sz+offset <= int32(cap(buf)) {
		buf = buf[:offset+sz]
		if _, err := io.ReadFull(r, buf[offset:offset+sz]); err != nil {
			return 0, buf, err
		}
		return sz, buf, nil
	} else {
		newbuf := make([]byte, sz+offset)
		copy(newbuf, buf[:offset])
		if _, err := io.ReadFull(r, newbuf[offset:offset+sz]); err != nil {
			return 0, newbuf, err
		}
		return sz, newbuf, nil
	}
}
Panic on invalid input

Description: checkAggStateMagic panics on read errors or mismatched magic, which can crash the process
and become a denial-of-service vector if intermediate aggregation state bytes can be
corrupted or attacker-influenced (e.g., via spill files or distributed exchange).
aggState.go [659-664]

Referred Code
func checkAggStateMagic(reader io.Reader) {
	magic, err := types.ReadUint64(reader)
	if err != nil || magic != magicNumber {
		panic(moerr.NewInternalErrorNoCtxf("invalid magic number, got %d, %v", magic, err))
	}
}
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

🔴
Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
Panic-based failures: New logic uses multiple panic(...) paths for malformed/intermediate data (e.g., magic
mismatch and arg count mismatches), which can crash the process instead of returning
actionable errors.

Referred Code
func checkAggStateMagic(reader io.Reader) {
	magic, err := types.ReadUint64(reader)
	if err != nil || magic != magicNumber {
		panic(moerr.NewInternalErrorNoCtxf("invalid magic number, got %d, %v", magic, err))
	}

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status:
Internal details in panic: Panic messages include internal state details (e.g., magic values and mismatch counters)
and it is unclear from the diff whether these panics can surface to user-facing error
paths.

Referred Code
func checkAggStateMagic(reader io.Reader) {
	magic, err := types.ReadUint64(reader)
	if err != nil || magic != magicNumber {
		panic(moerr.NewInternalErrorNoCtxf("invalid magic number, got %d, %v", magic, err))
	}

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status:
Missing length validation: UnsafeFromBytes dereferences bs[0] without checking len(bs), which can panic if any caller
passes an empty slice due to corrupted/intermediate state data.

Referred Code
func UnsafeFromBytes[T any](bs []byte) *T {
	return (*T)(unsafe.Pointer(&bs[0]))
}

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

return exec.batchFillArgs(offset, groups, vectors, true)
}

for i, grp := range groups {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

可以先判断 vectors[0].hasNull。弄2个分支,可能对于没有null值的会快一点。
if vectors[0].hasNull{
//当前代码
} else {
//当前代码去掉125行的判断
}

@fengttt fengttt merged commit 0788188 into matrixorigin:main Jan 8, 2026
22 checks passed
gouhongshen pushed a commit to gouhongshen/matrixone that referenced this pull request Jan 9, 2026
### **User description**
## What type of PR is this?

- [ ] API-change
- [ ] BUG
- [ ] Improvement
- [ ] Documentation
- [x] Feature
- [ ] Test and CI
- [x] Code Refactoring

## Which issue(s) this PR fixes:

issue matrixorigin#22761

Move agg state from AoS to SoA

## What this PR does / why we need it:

This supercedes matrixorigin#23420


___

### **PR Type**
Enhancement, Bug fix


___

### **Description**
- Refactor aggregation state storage from Array-of-Structures to
Structure-of-Arrays (SoA) layout

- Implement skiplist-based argument storage for distinct aggregations

- Reimplement sum and avg functions using new aggregation framework

- Add support for decimal types in sum/avg operations

- Fix memory management and spill handling in group operations


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Old AoS State<br/>Generic Type S"] -->|Refactor| B["New SoA State<br/>Vector-based"]
  B -->|For Distinct| C["Skiplist Arena<br/>Argument Storage"]
  B -->|For Non-Distinct| D["Direct Vectors<br/>Count + Sum"]
  E["Sum/Avg Functions"] -->|Use| B
  E -->|Support| F["Int/Float/Decimal<br/>Types"]
```



<details><summary><h3>File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>12
files</summary><table>
<tr>
<td><strong>aggState.go</strong><dd><code>Refactor aggregation state to
SoA with skiplist storage</code>&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-e023f6352c901853a62c98c252e34c0f31b14a20d29c620667370cbea5edcf83">+544/-381</a></td>

</tr>

<tr>
<td><strong>sumavg2.go</strong><dd><code>Implement sum and avg using new
framework</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-f4961ee7f272980b25855019d81061f270cfaf62eb3b2799ee999660d4ac8956">+487/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>count2.go</strong><dd><code>Update count functions for new
state layout</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-bbf5f9f87fed8eaa2f14ee010f2ef24c192c566c8a1cc0b11bee222df45b20b3">+37/-46</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>types.go</strong><dd><code>Register sum and avg in special
aggregations</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-cd5af867783cc19c2659aad9c2b6a24e570619d5e9cb5d6292f46baa6cabb9a2">+4/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>register.go</strong><dd><code>Add registration functions for
sum and avg</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-040b6aac95df3c18b9f78c29a0deeaf3d8643afff751d411ebd2d4c9fb833960">+12/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>encoding.go</strong><dd><code>Add int16/uint16/uint32
read/write helpers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-cce6203321c48e45c767e40b599732cbd11ff38692bdb5cb385ce3ca27ed51e6">+61/-16</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>decimal.go</strong><dd><code>Add decimal conversion helper
functions</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-8d5b2690a1f9d8ca0a5ff6c1b48195a2fb10a30db49e3f5f04e528ef2a33a463">+21/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>vector.go</strong><dd><code>Add null append and improve
vector free handling</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-28ac70822524921592389604c9d3caa2e7c488a52b02d22fe9bdc35f8d808d5f">+10/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>ptrlen.go</strong><dd><code>Add Replace and Free methods to
PtrLen</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-59a36f9022fac34af758ef88ba394a74fd83f1cada7f4b93a095f1772da81ca8">+34/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>unsafe.go</strong><dd><code>Add UnsafeFromBytes helper
function</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-f10eaba63e271ae6d287840b81c933ab92104079b0e9ad39a6d6bba9b459dbf3">+4/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>list_agg.go</strong><dd><code>Update sum/avg to use new
framework functions</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-28b8c798a448a1a44bb9deb400c059ce8ca0a5b0cae0e9e1ee884b21ef14b619">+20/-6</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>special.go</strong><dd><code>Add registration wrappers for
sum and avg</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-d4f026626caba597d15eec009b379fbb52797eda110ee92c848e14dd48a1e475">+8/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>2 files</summary><table>
<tr>
<td><strong>types.go</strong><dd><code>Remove unused int32/uint32
conversion functions</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-960ca3f150354d99e2cd6d2230dfda1bcc5ba8daefdf467b812808250d3b965c">+6/-6</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>helper.go</strong><dd><code>Fix spill memory release
timing</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-c9d9cd6b008accd27ff56bb6a7b0860d64723c9b6c33f7ebf45f21dd61c8b235">+3/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>9
files</summary><table>
<tr>
<td><strong>mpool_test.go</strong><dd><code>Add test for PtrLen Replace
functionality</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-01e2ed668061952031bd9d6a3ca32adcff3aad73e7abf9e7519d7e6992dad197">+26/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>count2_test.go</strong><dd><code>Add skiplist validation
checks to tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-c23d1f8157b76e7c0f781c1dcecc5eddb17524740b00916db35604c9be015406">+4/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>time_window.result</strong><dd><code>Update test results for
new aggregation behavior</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-42534753fd8e34e93bf23a7c96432fd69ca275ed2bb55d68905da57293247b2a">+23/-9</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>window.result</strong><dd><code>Update window function test
results</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-9bd21d8cf5814f8541e3b0948988bb345344ede5db13d5fbcdcba89cf0996079">+2/-12</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>window.sql</strong><dd><code>Add issue markers to window
tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-dd6bae38afaeafe5010141e4eceef3889bbccb3a511270a44212c06722586bb5">+3/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>boundary_comprehensive.result</strong><dd><code>Update
overflow error message format</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-3d1ebd79d008a5273ef28530ebf8d070f63ecbba276628be1bb43e2cf49a5ae5">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>func_datetime_utc_timestamp.result</strong><dd><code>Update
timestamp calculation test result</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-e2ce94c306d9d720f29e8bffbac5e3bb0b08fdf39c1db61dca881197d9dfeee0">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>table_func_metadata_scan.result</strong><dd><code>Update
overflow error message format</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-eb18bed9d1adf22a836e1a632f15e1b2b7489bb76b95d4c973142d30998d2faa">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>bit.result</strong><dd><code>Update bit type aggregation
test results</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-aac004664cce0f0487d273c5f2eeb91620333d201ada4881e230d1be554d01d0">+2/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>repl.go</strong><dd><code>Update copyright year to
2026</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-e7edbd02d3935c2cb7c378e599ce2a8192db9fe2f07066db49426471fbc85a74">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>9 files</summary><table>
<tr>
  <td><strong>encoding_test.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-54e208f98e518e8677c324bd2b45340d0eb22c094f438bb4c46c3e1448427b1f">+0/-9</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>reuse.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-486fe1d28f24b49a1a1f523ebaf9b96b31e43961fe15c06beaacbb5164842a1a">+0/-75</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>avg.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-1acef59bd6061fadf590a75425eff732f50bdd4748a99dbe883edb478841d6d2">+0/-275</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>size_test.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-bdd9d4b504f9ca15a4c78e399bc74f6dee356eb8e7d4ab0c6a369d655d097bce">+0/-15</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>sum.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-006b3e8b5288b8e8007a552406fb85fb0da54d2104b3a1e064c676600fe5c6ca">+0/-336</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>sum_test.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-47067e8507b855d6614b2e5acefdfd35adacc24b70738469353783f2ef1b22ba">+0/-605</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>types.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-d2f2ff6ee6ce156b1285bc12c1958736dcade0f5bd7db761fb78307e4394c369">+0/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>sum.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-fef97e5322d9e3c3bb796acb710fc88bc043337bec6b9232b73edabc3fb67a80">+0/-118</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>sum_test.go</strong></td>
<td><a
href="https://github.com/matrixorigin/matrixone/pull/23459/files#diff-bb19b329d5ea525787b6029cfde0c26628fb35400dca4203d2b26d0a75582c6a">+0/-48</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr></tbody></table>

</details>

___
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/feature kind/refactor Code refactor Review effort 4/5 size/XXL Denotes a PR that changes 2000+ lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants