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  }