MCPcopy Create free account
hub / github.com/dolthub/doltgresql / nodeCreateTable

Function nodeCreateTable

server/ast/create_table.go:27–125  ·  view source on GitHub ↗

nodeCreateTable handles *tree.CreateTable nodes.

(ctx *Context, node *tree.CreateTable)

Source from the content-addressed store, hash-verified

25
26// nodeCreateTable handles *tree.CreateTable nodes.
27func nodeCreateTable(ctx *Context, node *tree.CreateTable) (*vitess.DDL, error) {
28 if node == nil {
29 return nil, nil
30 }
31 if len(node.StorageParams) > 0 {
32 return nil, errors.Errorf("storage parameters are not yet supported")
33 }
34 // TODO: support tree.CreateTableOnCommitDrop and tree.CreateTableOnCommitDeleteRows
35 switch node.OnCommit {
36 case tree.CreateTableOnCommitDrop:
37 // is unsupported and ignored
38 case tree.CreateTableOnCommitDeleteRows:
39 // is unsupported and ignored
40 }
41 tableName, err := nodeTableName(ctx, &node.Table)
42 if err != nil {
43 return nil, err
44 }
45 var isTemporary bool
46 switch node.Persistence {
47 case tree.PersistencePermanent:
48 isTemporary = false
49 case tree.PersistenceTemporary:
50 isTemporary = true
51 case tree.PersistenceUnlogged:
52 return nil, errors.Errorf("UNLOGGED is not yet supported")
53 default:
54 return nil, errors.Errorf("unknown persistence strategy encountered")
55 }
56 var optSelect *vitess.OptSelect
57 if node.Using != "" {
58 return nil, errors.Errorf("USING is not yet supported")
59 }
60 if node.Tablespace != "" {
61 return nil, errors.Errorf("TABLESPACE is not yet supported")
62 }
63 if node.AsSource != nil {
64 selectStmt, err := nodeSelect(ctx, node.AsSource)
65 if err != nil {
66 return nil, err
67 }
68 optSelect = &vitess.OptSelect{
69 Select: selectStmt,
70 }
71 }
72 var optLike *vitess.OptLike
73 if len(node.Inherits) > 0 {
74 optLike = &vitess.OptLike{
75 LikeTables: []vitess.TableName{},
76 }
77 for _, table := range node.Inherits {
78 likeTable, err := nodeTableName(ctx, &table)
79 if err != nil {
80 return nil, err
81 }
82 optLike.LikeTables = append(optLike.LikeTables, likeTable)
83 }
84 }

Callers 1

ConvertFunction · 0.85

Calls 6

nodeTableNameFunction · 0.85
nodeSelectFunction · 0.85
assignTableDefsFunction · 0.85
ErrorfMethod · 0.65
StringMethod · 0.65
TableMethod · 0.45

Tested by

no test coverage detected