@@ -570,7 +570,9 @@ type doltIndex struct {
570570 tblName string
571571 dbName string
572572
573- columns []schema.Column
573+ columns []schema.Column
574+ colExprTypes []sql.ColumnExpressionType
575+ colExprNames []string
574576
575577 indexSch schema.Schema
576578 tableSch schema.Schema
@@ -656,14 +658,16 @@ func (di *doltIndex) CanSupportOrderBy(expr sql.Expression) bool {
656658
657659// ColumnExpressionTypes implements the interface sql.Index.
658660func (di * doltIndex ) ColumnExpressionTypes () []sql.ColumnExpressionType {
659- cets := make ([]sql.ColumnExpressionType , len (di .columns ))
660- for i , col := range di .columns {
661- cets [i ] = sql.ColumnExpressionType {
662- Expression : di .tblName + "." + col .Name ,
663- Type : col .TypeInfo .ToSqlType (),
661+ if di .colExprTypes == nil {
662+ di .colExprTypes = make ([]sql.ColumnExpressionType , len (di .columns ))
663+ for i , col := range di .columns {
664+ di .colExprTypes [i ] = sql.ColumnExpressionType {
665+ Expression : di .tblName + "." + col .Name ,
666+ Type : col .TypeInfo .ToSqlType (),
667+ }
664668 }
665669 }
666- return cets
670+ return di . colExprTypes
667671}
668672
669673// ExtendedColumnExpressionTypes implements the interface sql.ExtendedIndex.
@@ -985,11 +989,13 @@ func (di *doltIndex) Database() string {
985989
986990// Expressions implements sql.Index
987991func (di * doltIndex ) Expressions () []string {
988- strs := make ([]string , len (di .columns ))
989- for i , col := range di .columns {
990- strs [i ] = di .tblName + "." + col .Name
992+ if di .colExprNames == nil {
993+ di .colExprNames = make ([]string , len (di .columns ))
994+ for i , col := range di .columns {
995+ di .colExprNames [i ] = di .tblName + "." + col .Name
996+ }
991997 }
992- return strs
998+ return di . colExprNames
993999}
9941000
9951001// ExtendedExpressions implements sql.ExtendedIndex
0 commit comments