func newMockResolve(node ast.Node) error { indices := []*model.IndexInfo{ { Name: model.NewCIStr("b"), Columns: []*model.IndexColumn{ { Name: model.NewCIStr("b"), }, }, }, { Name: model.NewCIStr("c_d_e"), Columns: []*model.IndexColumn{ { Name: model.NewCIStr("c"), }, { Name: model.NewCIStr("d"), }, { Name: model.NewCIStr("e"), }, }, }, } pkColumn := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("a"), } col0 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("b"), } col1 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("c"), } col2 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("d"), } pkColumn.Flag = mysql.PriKeyFlag table := &model.TableInfo{ Columns: []*model.ColumnInfo{pkColumn, col0, col1, col2}, Indices: indices, Name: model.NewCIStr("t"), PKIsHandle: true, } is := infoschema.MockInfoSchema([]*model.TableInfo{table}) ctx := mock.NewContext() variable.BindSessionVars(ctx) return MockResolveName(node, is, "test", ctx) }
func mockResolve(node ast.Node) error { indices := []*model.IndexInfo{ { Name: model.NewCIStr("c_d_e"), Columns: []*model.IndexColumn{ { Name: model.NewCIStr("c"), Length: types.UnspecifiedLength, Offset: 1, }, { Name: model.NewCIStr("d"), Length: types.UnspecifiedLength, Offset: 2, }, { Name: model.NewCIStr("e"), Length: types.UnspecifiedLength, Offset: 3, }, }, State: model.StatePublic, }, { Name: model.NewCIStr("e"), Columns: []*model.IndexColumn{ { Name: model.NewCIStr("e"), Length: types.UnspecifiedLength, }, }, State: model.StateWriteOnly, }, { Name: model.NewCIStr("f"), Columns: []*model.IndexColumn{ { Name: model.NewCIStr("f"), Length: types.UnspecifiedLength, Offset: 1, }, }, State: model.StatePublic, }, { Name: model.NewCIStr("g"), Columns: []*model.IndexColumn{ { Name: model.NewCIStr("g"), Length: types.UnspecifiedLength, Offset: 1, }, }, State: model.StatePublic, }, { Name: model.NewCIStr("f_g"), Columns: []*model.IndexColumn{ { Name: model.NewCIStr("f"), Length: types.UnspecifiedLength, Offset: 1, }, { Name: model.NewCIStr("g"), Length: types.UnspecifiedLength, Offset: 2, }, }, State: model.StatePublic, }, { Name: model.NewCIStr("c_d_e_str"), Columns: []*model.IndexColumn{ { Name: model.NewCIStr("c_str"), Length: types.UnspecifiedLength, Offset: 5, }, { Name: model.NewCIStr("d_str"), Length: types.UnspecifiedLength, Offset: 6, }, { Name: model.NewCIStr("e_str"), Length: types.UnspecifiedLength, Offset: 7, }, }, State: model.StatePublic, }, } pkColumn := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("a"), FieldType: newLongType(), ID: 1, } col0 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("b"), FieldType: newLongType(), ID: 2, } col1 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("c"), FieldType: newLongType(), ID: 3, } col2 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("d"), FieldType: newLongType(), ID: 4, } col3 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("e"), FieldType: newLongType(), ID: 5, } colStr1 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("c_str"), FieldType: newStringType(), ID: 6, } colStr2 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("d_str"), FieldType: newStringType(), ID: 7, } colStr3 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("e_str"), FieldType: newStringType(), ID: 8, } col4 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("f"), FieldType: newLongType(), ID: 9, } col5 := &model.ColumnInfo{ State: model.StatePublic, Name: model.NewCIStr("g"), FieldType: newLongType(), ID: 10, } pkColumn.Flag = mysql.PriKeyFlag table := &model.TableInfo{ Columns: []*model.ColumnInfo{pkColumn, col0, col1, col2, col3, colStr1, colStr2, colStr3, col4, col5}, Indices: indices, Name: model.NewCIStr("t"), PKIsHandle: true, } is := infoschema.MockInfoSchema([]*model.TableInfo{table}) ctx := mock.NewContext() err := MockResolveName(node, is, "test", ctx) if err != nil { return err } return InferType(ctx.GetSessionVars().StmtCtx, node) }