(name Name, typ *types.T, c ColumnCollation)
| 258 | } |
| 259 | |
| 260 | func processCollationOnType(name Name, typ *types.T, c ColumnCollation) (*types.T, error) { |
| 261 | switch typ.Family() { |
| 262 | case types.StringFamily: |
| 263 | return types.MakeCollatedString(typ, string(c)), nil |
| 264 | case types.CollatedStringFamily: |
| 265 | return nil, pgerror.Newf(pgcode.Syntax, |
| 266 | "multiple COLLATE declarations for column %q", name) |
| 267 | case types.ArrayFamily: |
| 268 | elemTyp, err := processCollationOnType(name, typ.ArrayContents(), c) |
| 269 | if err != nil { |
| 270 | return nil, err |
| 271 | } |
| 272 | return types.MakeArray(elemTyp), nil |
| 273 | default: |
| 274 | return nil, pgerror.Newf(pgcode.DatatypeMismatch, |
| 275 | "COLLATE declaration for non-string-typed column %q", name) |
| 276 | } |
| 277 | } |
| 278 | |
| 279 | // NewColumnTableDef constructs a column definition for a CreateTable statement. |
| 280 | func NewColumnTableDef( |
no test coverage detected
searching dependent graphs…