Skip to content

Commit 0b5e1a6

Browse files
committed
fix regression
1 parent 86456c6 commit 0b5e1a6

2 files changed

Lines changed: 11 additions & 13 deletions

File tree

server/ast/create_function.go

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,17 @@ func nodeCreateFunction(ctx *Context, node *tree.CreateFunction) (vitess.Stateme
8585
for i, op := range parsedBody {
8686
switch op.OpCode {
8787
case plpgsql.OpCode_Declare:
88-
declareTyp, err := parser.ParseType(op.PrimaryData)
89-
if err != nil {
90-
return nil, err
88+
// ParseType uses casting to parse the given type, but
89+
// some special types cannot be cast. Eg: `user_defined_table_type%ROWTYPE`
90+
if declareTyp, err := parser.ParseType(op.PrimaryData); err == nil {
91+
if _, dt, err := nodeResolvableTypeReference(ctx, declareTyp, false); err == nil && dt != nil {
92+
dtName := dt.Name()
93+
if dt.Schema() != "" {
94+
dtName = fmt.Sprintf("%s.%s", dt.Schema(), dtName)
95+
}
96+
parsedBody[i].PrimaryData = dtName
97+
}
9198
}
92-
_, dt, err := nodeResolvableTypeReference(ctx, declareTyp, false)
93-
if err != nil {
94-
return nil, err
95-
}
96-
dtName := dt.Name()
97-
if dt.Schema() != "" {
98-
dtName = fmt.Sprintf("%s.%s", dt.Schema(), dtName)
99-
}
100-
parsedBody[i].PrimaryData = dtName
10199
}
102100
}
103101
case "sql":

server/ast/resolvable_type_reference.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ func nodeResolvableTypeReference(ctx *Context, typ tree.ResolvableTypeReference,
192192
}
193193
}
194194
default:
195-
return nil, nil, errors.Errorf("unknown type with oid: %d", uint32(columnType.Oid()))
195+
doltgresType = pgtypes.NewUnresolvedDoltgresType("", strings.ToLower(columnType.Name()))
196196
}
197197
}
198198
default:

0 commit comments

Comments
 (0)