Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
5a906c6
update
daviszhen Aug 7, 2026
a12cec5
update
daviszhen Aug 7, 2026
b98f188
Merge branch 'main' into 0807-add-within-group-by
daviszhen Aug 7, 2026
ef2a72a
update
daviszhen Aug 7, 2026
4346d1a
Merge branch '0807-add-within-group-by' of https://github.com/daviszh…
daviszhen Aug 7, 2026
26a3dc8
update
daviszhen Aug 7, 2026
125e4b6
Merge branch 'main' into 0807-add-within-group-by
daviszhen Aug 7, 2026
6f720e7
update
daviszhen Aug 7, 2026
82b477a
Merge branch '0807-add-within-group-by' of https://github.com/daviszh…
daviszhen Aug 7, 2026
d57670d
Merge branch 'main' into 0807-add-within-group-by
daviszhen Aug 7, 2026
bae0e69
Merge branch 'main' into 0807-add-within-group-by
daviszhen Aug 7, 2026
d0d989b
update
daviszhen Aug 9, 2026
b436558
update
daviszhen Aug 9, 2026
3aa363a
Merge branch '0807-add-within-group-by' of https://github.com/daviszh…
daviszhen Aug 9, 2026
6fc7078
Merge branch 'main' into 0807-add-within-group-by
daviszhen Aug 9, 2026
037d7c1
update
daviszhen Aug 10, 2026
dec1193
update
daviszhen Aug 10, 2026
b46844d
update
daviszhen Aug 10, 2026
4ff5175
Merge branch 'main' into 0807-add-within-group-by
daviszhen Aug 10, 2026
15d9b16
Merge branch 'main' into 0807-add-within-group-by
daviszhen Aug 10, 2026
9ba5869
update:
daviszhen Aug 10, 2026
178c2dd
Merge branch 'main' into 0807-add-within-group-by
daviszhen Aug 10, 2026
b2ebbf6
update
daviszhen Aug 10, 2026
9ca51a9
Merge branch 'main' of https://github.com/matrixorigin/matrixone into…
daviszhen Aug 10, 2026
902c821
Merge branch 'main' of https://github.com/matrixorigin/matrixone into…
daviszhen Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion pkg/defines/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ const (
MORPCVersion13 int64 = 13 // lossless v2 prefix-index metadata
MORPCVersion14 int64 = 14 // utf8mb4 text MIN/MAX collation semantics
MORPCVersion15 int64 = 15 // CHECK metadata in rename-column alter requests
MORPCLatestVersion = MORPCVersion15
MORPCVersion16 int64 = 16 // ordered-set percentile aggregate IDs
MORPCLatestVersion = MORPCVersion16
)

// DefaultLockWaitTimeoutSeconds is shared by the frontend default and by
Expand Down
15 changes: 15 additions & 0 deletions pkg/sql/colexec/aggexec/concat2.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,21 @@ func EncodeGroupConcatOrderedConfig(config []byte, maxLen uint64) []byte {
return runtimeConfig
}

// HasGroupConcatOrder reports whether a GROUP_CONCAT_ORDER configuration
// contains at least one real ORDER BY argument. The aggregate config is
// carried in two forms: the plan payload starts with the version byte, while
// the execution payload may be prefixed by the runtime max-length header.
// Invalid payloads are treated as unordered so callers fail closed when
// deciding whether generic DISTINCT spill is safe.
func HasGroupConcatOrder(config []byte) bool {
if len(config) >= groupConcatOrderedConfigHeaderSize &&
bytes.Equal(config[:len(groupConcatOrderedConfigMagic)], groupConcatOrderedConfigMagic) {
config = config[groupConcatOrderedConfigHeaderSize:]
}
_, orderArgIndexes, _, _, _, err := decodeGroupConcatOrderConfig(config)
return err == nil && len(orderArgIndexes) > 0
}

func RefreshGroupConcatConfigMaxLen(config []byte, maxLen uint64) []byte {
if len(config) >= groupConcatOrderedConfigHeaderSize &&
bytes.Equal(config[:len(groupConcatOrderedConfigMagic)], groupConcatOrderedConfigMagic) {
Expand Down
13 changes: 13 additions & 0 deletions pkg/sql/colexec/aggexec/concat2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,19 @@ func TestGroupConcatOrderConfigValidationAndReturnType(t *testing.T) {
})
}

func TestHasGroupConcatOrder(t *testing.T) {
ordered := testGroupConcatOrderConfig(1, []byte{groupConcatOrderAsc}, "|").Data
unordered := testGroupConcatOrderConfig(1, nil, "|").Data
malformed := []byte{groupConcatOrderConfigVersion}

require.True(t, HasGroupConcatOrder(ordered))
require.True(t, HasGroupConcatOrder(EncodeGroupConcatOrderedConfig(ordered, 10)))
require.False(t, HasGroupConcatOrder(unordered))
require.False(t, HasGroupConcatOrder(EncodeGroupConcatOrderedConfig(unordered, 10)))
require.False(t, HasGroupConcatOrder(malformed))
require.False(t, HasGroupConcatOrder(EncodeGroupConcatConfig("|", 10)))
}

func TestGroupConcatOrderedMaxLen(t *testing.T) {
mp := mpool.MustNewZero()
info := multiAggInfo{
Expand Down
3 changes: 2 additions & 1 deletion pkg/sql/colexec/aggexec/empty_result.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ func GetEmptyResultKind(aggID int64) EmptyResultKind {
return EmptyResultZero
case AggIdOfAny, AggIdOfAvg, AggIdOfGroupConcat, AggIdOfJsonArrayAgg,
AggIdOfJsonObjectAgg, AggIdOfMax, AggIdOfMaxBy, AggIdOfMaxByNonNull,
AggIdOfMedian, AggIdOfMin, AggIdOfApproxPercentile, AggIdOfStdDevPop,
AggIdOfMedian, AggIdOfMin, AggIdOfApproxPercentile, AggIdOfPercentileCont,
AggIdOfPercentileDisc, AggIdOfStdDevPop,
AggIdOfStdDevSample, AggIdOfSum, AggIdOfVarPop, AggIdOfVarSample:
return EmptyResultNull
case AggIdOfAvgTwCache, AggIdOfAvgTwResult, AggIdOfBitmapConstruct,
Expand Down
2 changes: 2 additions & 0 deletions pkg/sql/colexec/aggexec/function_id.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,6 @@ const (
AggIdOfApproxPercentile int64 = 557 << 32
AggIdOfMaxBy int64 = 559 << 32
AggIdOfMaxByNonNull int64 = 560 << 32
AggIdOfPercentileCont int64 = 562 << 32
AggIdOfPercentileDisc int64 = 563 << 32
)
Loading
Loading