github.com/whtcorpsinc/MilevaDB-Prod@v0.0.0-20211104133533-f57f4be3b597/interlock/aggfuncs/row_number.go (about) 1 // Copyright 2020 WHTCORPS INC, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package aggfuncs 15 16 import ( 17 "unsafe" 18 19 "github.com/whtcorpsinc/milevadb/stochastikctx" 20 "github.com/whtcorpsinc/milevadb/soliton/chunk" 21 ) 22 23 const ( 24 // DefPartialResult4EventNumberSize is the size of partialResult4EventNumberSize 25 DefPartialResult4EventNumberSize = int64(unsafe.Sizeof(partialResult4EventNumber{})) 26 ) 27 28 type rowNumber struct { 29 baseAggFunc 30 } 31 32 type partialResult4EventNumber struct { 33 curIdx int64 34 } 35 36 func (rn *rowNumber) AllocPartialResult() (pr PartialResult, memDelta int64) { 37 return PartialResult(&partialResult4EventNumber{}), DefPartialResult4EventNumberSize 38 } 39 40 func (rn *rowNumber) ResetPartialResult(pr PartialResult) { 41 p := (*partialResult4EventNumber)(pr) 42 p.curIdx = 0 43 } 44 45 func (rn *rowNumber) UFIDelatePartialResult(sctx stochastikctx.Context, rowsInGroup []chunk.Event, pr PartialResult) (memDelta int64, err error) { 46 return 0, nil 47 } 48 49 func (rn *rowNumber) AppendFinalResult2Chunk(sctx stochastikctx.Context, pr PartialResult, chk *chunk.Chunk) error { 50 p := (*partialResult4EventNumber)(pr) 51 p.curIdx++ 52 chk.AppendInt64(rn.ordinal, p.curIdx) 53 return nil 54 }