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

Method RowIter

server/node/alter_sequence.go:78–148  ·  view source on GitHub ↗

RowIter implements the interface sql.ExecSourceRel.

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

Source from the content-addressed store, hash-verified

76
77// RowIter implements the interface sql.ExecSourceRel.
78func (c *AlterSequence) RowIter(ctx *sql.Context, r sql.Row) (sql.RowIter, error) {
79 targetSchema, err := core.GetSchemaName(ctx, nil, c.targetSchema)
80 if err != nil {
81 return nil, err
82 }
83 target := id.NewSequence(targetSchema, c.targetSequence)
84 collection, err := core.GetSequencesCollectionFromContext(ctx, ctx.GetCurrentDatabase())
85 if err != nil {
86 return nil, err
87 }
88 if !collection.HasSequence(ctx, target) {
89 if c.ifExists {
90 return sql.RowsToRowIter(), nil
91 }
92 return nil, errors.Errorf(`relation "%s" does not exist`, c.targetSequence)
93 }
94 seq, err := collection.GetSequence(ctx, target)
95 if err != nil {
96 return nil, err
97 }
98
99 if c.ownedBy.IsSet {
100 if len(c.ownedBy.Table) > 0 {
101 relationType, err := core.GetRelationType(ctx, targetSchema, c.ownedBy.Table)
102 if err != nil {
103 return nil, err
104 }
105 if relationType == core.RelationType_DoesNotExist {
106 return nil, errors.Errorf(`relation "%s" does not exist`, c.ownedBy.Table)
107 } else if relationType != core.RelationType_Table {
108 return nil, errors.Errorf(`sequence cannot be owned by relation "%s"`, c.ownedBy.Table)
109 }
110
111 table, err := core.GetSqlTableFromContext(ctx, "", doltdb.TableName{Name: c.ownedBy.Table, Schema: targetSchema})
112 if err != nil {
113 return nil, err
114 }
115 if table == nil {
116 return nil, errors.Errorf(`table "%s" cannot be found but says it exists`, c.ownedBy.Table)
117 }
118 var tableColumn *sql.Column
119 for _, col := range table.Schema(ctx) {
120 if col.Name == c.ownedBy.Column {
121 tableColumn = col.Copy()
122 break
123 }
124 }
125 if tableColumn == nil {
126 return nil, errors.Errorf(`column "%s" of relation "%s" does not exist`,
127 c.ownedBy.Column, c.ownedBy.Table)
128 }
129 // We've verified the existence of the table's column, so we can assign it now
130 seq.OwnerTable = id.NewTable(targetSchema, c.ownedBy.Table)
131 seq.OwnerColumn = c.ownedBy.Column
132 } else {
133 seq.OwnerTable = ""
134 seq.OwnerColumn = ""
135 }

Callers

nothing calls this directly

Calls 11

GetSchemaNameFunction · 0.92
NewSequenceFunction · 0.92
GetRelationTypeFunction · 0.92
GetSqlTableFromContextFunction · 0.92
NewTableFunction · 0.92
HasSequenceMethod · 0.80
GetSequenceMethod · 0.80
ErrorfMethod · 0.65
SchemaMethod · 0.65
CopyMethod · 0.65

Tested by

no test coverage detected