github.com/matrixorigin/matrixone@v0.7.0/pkg/vm/overload.go (about) 1 // Copyright 2021 Matrix Origin 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 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package vm 16 17 import ( 18 "bytes" 19 20 "github.com/matrixorigin/matrixone/pkg/sql/colexec/anti" 21 "github.com/matrixorigin/matrixone/pkg/sql/colexec/connector" 22 "github.com/matrixorigin/matrixone/pkg/sql/colexec/deletion" 23 "github.com/matrixorigin/matrixone/pkg/sql/colexec/dispatch" 24 "github.com/matrixorigin/matrixone/pkg/sql/colexec/external" 25 "github.com/matrixorigin/matrixone/pkg/sql/colexec/group" 26 "github.com/matrixorigin/matrixone/pkg/sql/colexec/hashbuild" 27 "github.com/matrixorigin/matrixone/pkg/sql/colexec/insert" 28 "github.com/matrixorigin/matrixone/pkg/sql/colexec/intersect" 29 "github.com/matrixorigin/matrixone/pkg/sql/colexec/intersectall" 30 "github.com/matrixorigin/matrixone/pkg/sql/colexec/join" 31 "github.com/matrixorigin/matrixone/pkg/sql/colexec/left" 32 "github.com/matrixorigin/matrixone/pkg/sql/colexec/limit" 33 "github.com/matrixorigin/matrixone/pkg/sql/colexec/loopanti" 34 "github.com/matrixorigin/matrixone/pkg/sql/colexec/loopjoin" 35 "github.com/matrixorigin/matrixone/pkg/sql/colexec/loopleft" 36 "github.com/matrixorigin/matrixone/pkg/sql/colexec/loopmark" 37 "github.com/matrixorigin/matrixone/pkg/sql/colexec/loopsemi" 38 "github.com/matrixorigin/matrixone/pkg/sql/colexec/loopsingle" 39 "github.com/matrixorigin/matrixone/pkg/sql/colexec/mark" 40 "github.com/matrixorigin/matrixone/pkg/sql/colexec/merge" 41 "github.com/matrixorigin/matrixone/pkg/sql/colexec/mergeblock" 42 "github.com/matrixorigin/matrixone/pkg/sql/colexec/mergegroup" 43 "github.com/matrixorigin/matrixone/pkg/sql/colexec/mergelimit" 44 "github.com/matrixorigin/matrixone/pkg/sql/colexec/mergeoffset" 45 "github.com/matrixorigin/matrixone/pkg/sql/colexec/mergeorder" 46 "github.com/matrixorigin/matrixone/pkg/sql/colexec/mergetop" 47 "github.com/matrixorigin/matrixone/pkg/sql/colexec/minus" 48 "github.com/matrixorigin/matrixone/pkg/sql/colexec/offset" 49 "github.com/matrixorigin/matrixone/pkg/sql/colexec/order" 50 "github.com/matrixorigin/matrixone/pkg/sql/colexec/output" 51 "github.com/matrixorigin/matrixone/pkg/sql/colexec/product" 52 "github.com/matrixorigin/matrixone/pkg/sql/colexec/projection" 53 "github.com/matrixorigin/matrixone/pkg/sql/colexec/restrict" 54 "github.com/matrixorigin/matrixone/pkg/sql/colexec/semi" 55 "github.com/matrixorigin/matrixone/pkg/sql/colexec/single" 56 "github.com/matrixorigin/matrixone/pkg/sql/colexec/table_function" 57 "github.com/matrixorigin/matrixone/pkg/sql/colexec/top" 58 "github.com/matrixorigin/matrixone/pkg/sql/colexec/update" 59 "github.com/matrixorigin/matrixone/pkg/vm/process" 60 ) 61 62 var stringFunc = [...]func(any, *bytes.Buffer){ 63 Top: top.String, 64 Join: join.String, 65 Semi: semi.String, 66 Left: left.String, 67 Single: single.String, 68 Limit: limit.String, 69 Order: order.String, 70 Group: group.String, 71 Merge: merge.String, 72 Output: output.String, 73 Offset: offset.String, 74 Product: product.String, 75 Restrict: restrict.String, 76 Dispatch: dispatch.String, 77 Connector: connector.String, 78 Projection: projection.String, 79 Anti: anti.String, 80 Mark: mark.String, 81 MergeBlock: mergeblock.String, 82 LoopJoin: loopjoin.String, 83 LoopLeft: loopleft.String, 84 LoopSingle: loopsingle.String, 85 LoopSemi: loopsemi.String, 86 LoopAnti: loopanti.String, 87 LoopMark: loopmark.String, 88 89 MergeTop: mergetop.String, 90 MergeLimit: mergelimit.String, 91 MergeOrder: mergeorder.String, 92 MergeGroup: mergegroup.String, 93 MergeOffset: mergeoffset.String, 94 95 Deletion: deletion.String, 96 Insert: insert.String, 97 Update: update.String, 98 External: external.String, 99 100 Minus: minus.String, 101 Intersect: intersect.String, 102 IntersectAll: intersectall.String, 103 104 HashBuild: hashbuild.String, 105 106 TableFunction: table_function.String, 107 } 108 109 var prepareFunc = [...]func(*process.Process, any) error{ 110 Top: top.Prepare, 111 Join: join.Prepare, 112 Semi: semi.Prepare, 113 Left: left.Prepare, 114 Single: single.Prepare, 115 Limit: limit.Prepare, 116 Order: order.Prepare, 117 Group: group.Prepare, 118 Merge: merge.Prepare, 119 Output: output.Prepare, 120 Offset: offset.Prepare, 121 Product: product.Prepare, 122 Restrict: restrict.Prepare, 123 Dispatch: dispatch.Prepare, 124 Connector: connector.Prepare, 125 Projection: projection.Prepare, 126 Anti: anti.Prepare, 127 Mark: mark.Prepare, 128 MergeBlock: mergeblock.Prepare, 129 LoopJoin: loopjoin.Prepare, 130 LoopLeft: loopleft.Prepare, 131 LoopSingle: loopsingle.Prepare, 132 LoopSemi: loopsemi.Prepare, 133 LoopAnti: loopanti.Prepare, 134 LoopMark: loopmark.Prepare, 135 136 MergeTop: mergetop.Prepare, 137 MergeLimit: mergelimit.Prepare, 138 MergeOrder: mergeorder.Prepare, 139 MergeGroup: mergegroup.Prepare, 140 MergeOffset: mergeoffset.Prepare, 141 142 Deletion: deletion.Prepare, 143 Insert: insert.Prepare, 144 Update: update.Prepare, 145 External: external.Prepare, 146 147 Minus: minus.Prepare, 148 Intersect: intersect.Prepare, 149 IntersectAll: intersectall.Prepare, 150 151 HashBuild: hashbuild.Prepare, 152 153 TableFunction: table_function.Prepare, 154 } 155 156 var execFunc = [...]func(int, *process.Process, any, bool, bool) (bool, error){ 157 Top: top.Call, 158 Join: join.Call, 159 Semi: semi.Call, 160 Left: left.Call, 161 Single: single.Call, 162 Limit: limit.Call, 163 Order: order.Call, 164 Group: group.Call, 165 Merge: merge.Call, 166 Output: output.Call, 167 Offset: offset.Call, 168 Product: product.Call, 169 Restrict: restrict.Call, 170 Dispatch: dispatch.Call, 171 Connector: connector.Call, 172 Projection: projection.Call, 173 Anti: anti.Call, 174 Mark: mark.Call, 175 MergeBlock: mergeblock.Call, 176 LoopJoin: loopjoin.Call, 177 LoopLeft: loopleft.Call, 178 LoopSingle: loopsingle.Call, 179 LoopSemi: loopsemi.Call, 180 LoopAnti: loopanti.Call, 181 LoopMark: loopmark.Call, 182 183 MergeTop: mergetop.Call, 184 MergeLimit: mergelimit.Call, 185 MergeOrder: mergeorder.Call, 186 MergeGroup: mergegroup.Call, 187 MergeOffset: mergeoffset.Call, 188 189 Deletion: deletion.Call, 190 Insert: insert.Call, 191 Update: update.Call, 192 External: external.Call, 193 194 Minus: minus.Call, 195 Intersect: intersect.Call, 196 IntersectAll: intersectall.Call, 197 198 HashBuild: hashbuild.Call, 199 200 TableFunction: table_function.Call, 201 }