Skip to content

sql: add Close() method to RowIter. #103

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 9, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions cmd/gitql/query_base.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ func (c *cmdQueryBase) printQuery(schema sql.Schema, iter sql.RowIter, formatId
}
}

if err := iter.Close(); err != nil {
_ = f.Close()
return err
}

return f.Close()
}

Expand Down
5 changes: 5 additions & 0 deletions git/blobs.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ func (i *blobIter) Next() (sql.Row, error) {
return blobToRow(blob), nil
}

func (i *blobIter) Close() error {
i.i.Close()
return nil
}

func blobToRow(c *object.Blob) sql.Row {
return sql.NewRow(
c.Hash.String(),
Expand Down
5 changes: 5 additions & 0 deletions git/commits.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ func (i *commitIter) Next() (sql.Row, error) {
return commitToRow(commit), nil
}

func (i *commitIter) Close() error {
i.i.Close()
return nil
}

func commitToRow(c *object.Commit) sql.Row {
return sql.NewRow(
c.Hash.String(),
Expand Down
5 changes: 5 additions & 0 deletions git/objects.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ func (i *objectIter) Next() (sql.Row, error) {
return objectToRow(o), nil
}

func (i *objectIter) Close() error {
i.i.Close()
return nil
}

func objectToRow(o object.Object) sql.Row {
return sql.NewRow(
o.ID().String(),
Expand Down
5 changes: 5 additions & 0 deletions git/references.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ func (i *referenceIter) Next() (sql.Row, error) {
return referenceToRow(reference), nil
}

func (i *referenceIter) Close() error {
i.i.Close()
return nil
}

func referenceToRow(c *plumbing.Reference) sql.Row {
return sql.NewRow(
c.Hash().String(),
Expand Down
5 changes: 5 additions & 0 deletions git/tags.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ func (i *tagIter) Next() (sql.Row, error) {
return tagToRow(tag), nil
}

func (i *tagIter) Close() error {
i.i.Close()
return nil
}

func tagToRow(c *object.Tag) sql.Row {
return sql.NewRow(
c.Hash.String(),
Expand Down
5 changes: 5 additions & 0 deletions git/tree_entries.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ func (i *treeEntryIter) Next() (sql.Row, error) {
}
}

func (i *treeEntryIter) Close() error {
i.i.Close()
return nil
}

func treeEntryToRow(t *object.Tree, e object.TreeEntry) sql.Row {
return sql.NewRow(
t.ID().String(),
Expand Down
5 changes: 5 additions & 0 deletions mem/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,8 @@ func (i *iter) Next() (sql.Row, error) {
i.idx++
return row.Copy(), nil
}

func (i *iter) Close() error {
i.rows = nil
return nil
}
9 changes: 9 additions & 0 deletions sql/plan/cross_join.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,15 @@ func (i *crossJoinIterator) Next() (sql.Row, error) {
return row, nil
}

func (i *crossJoinIterator) Close() error {
if err := i.li.Close(); err != nil {
_ = i.ri.Close()
return err
}

return i.ri.Close()
}

func (i *crossJoinIterator) fillRows() error {
for {
rr, err := i.ri.Next()
Expand Down
4 changes: 4 additions & 0 deletions sql/plan/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,7 @@ func (i *describeIter) Next() (sql.Row, error) {
i.i++
return sql.NewRow(f.Name, f.Type.Name()), nil
}

func (i *describeIter) Close() error {
return nil
}
4 changes: 4 additions & 0 deletions sql/plan/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,7 @@ func (i *filterIter) Next() (sql.Row, error) {
}
}
}

func (i *filterIter) Close() error {
return i.childIter.Close()
}
5 changes: 5 additions & 0 deletions sql/plan/group_by.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@ func (i *groupByIter) Next() (sql.Row, error) {
return row, nil
}

func (i *groupByIter) Close() error {
i.rows = nil
return i.childIter.Close()
}

func (i *groupByIter) computeRows() error {
rows := []sql.Row{}
for {
Expand Down
4 changes: 4 additions & 0 deletions sql/plan/limit.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,7 @@ func (li *limitIter) Next() (sql.Row, error) {
}
return childRow, nil
}

func (li *limitIter) Close() error {
return li.childIter.Close()
}
4 changes: 4 additions & 0 deletions sql/plan/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ func (i *iter) Next() (sql.Row, error) {
return filterRow(i.p.Expressions, childRow), nil
}

func (i *iter) Close() error {
return i.childIter.Close()
}

func filterRow(expressions []sql.Expression, row sql.Row) sql.Row {
fields := []interface{}{}
for _, expr := range expressions {
Expand Down
5 changes: 5 additions & 0 deletions sql/plan/show_tables.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,8 @@ func (i *showTablesIter) Next() (sql.Row, error) {

return row, nil
}

func (i *showTablesIter) Close() error {
i.tableNames = nil
return nil
}
5 changes: 5 additions & 0 deletions sql/plan/sort.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ func (i *sortIter) Next() (sql.Row, error) {
return row, nil
}

func (i *sortIter) Close() error {
i.sortedRows = nil
return i.childIter.Close()
}

func (i *sortIter) computeSortedRows() error {
rows := []sql.Row{}
for {
Expand Down
3 changes: 2 additions & 1 deletion sql/row.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ type Value interface{}

type RowIter interface {
Next() (Row, error)
Close() error
}

func RowIterToRows(i RowIter) ([]Row, error) {
Expand All @@ -42,7 +43,7 @@ func RowIterToRows(i RowIter) ([]Row, error) {
rows = append(rows, row)
}

return rows, nil
return rows, i.Close()
}

func NodeToRows(n Node) ([]Row, error) {
Expand Down