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

Method BuildRowIter

server/node/create_table.go:71–97  ·  view source on GitHub ↗

BuildRowIter implements the interface sql.ExecBuilderNode.

(ctx *sql.Context, b sql.NodeExecBuilder, r sql.Row)

Source from the content-addressed store, hash-verified

69
70// BuildRowIter implements the interface sql.ExecBuilderNode.
71func (c *CreateTable) BuildRowIter(ctx *sql.Context, b sql.NodeExecBuilder, r sql.Row) (sql.RowIter, error) {
72 // Prevent tables from having names like `guid()`, which resembles a function
73 leftParen := strings.IndexByte(c.gmsCreateTable.Name(), '(')
74 rightParen := strings.IndexByte(c.gmsCreateTable.Name(), ')')
75 if leftParen != -1 && rightParen != -1 && rightParen > leftParen {
76 return nil, fmt.Errorf("table name `%s` cannot contain a parenthesized portion", c.gmsCreateTable.Name())
77 }
78
79 createTableIter, err := b.Build(ctx, c.gmsCreateTable, r)
80 if err != nil {
81 return nil, err
82 }
83
84 schemaName, err := core.GetSchemaName(ctx, c.gmsCreateTable.Db, "")
85 if err != nil {
86 return nil, err
87 }
88 for _, sequence := range c.sequences {
89 sequence.schema = schemaName
90 _, err = sequence.RowIter(ctx, r)
91 if err != nil {
92 _ = createTableIter.Close(ctx)
93 return nil, err
94 }
95 }
96 return createTableIter, err
97}
98
99// Schema implements the interface sql.ExecBuilderNode.
100func (c *CreateTable) Schema(ctx *sql.Context) sql.Schema {

Callers

nothing calls this directly

Calls 6

GetSchemaNameFunction · 0.92
NameMethod · 0.65
ErrorfMethod · 0.65
RowIterMethod · 0.65
CloseMethod · 0.65
BuildMethod · 0.45

Tested by

no test coverage detected