Skip to content

Commit 1d4e38a

Browse files
committed
Move scan utilities into one package.
1 parent 3f5ff0a commit 1d4e38a

38 files changed

+116
-113
lines changed

internal/catalog/table/constraints/foreignkey.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import (
44
"fmt"
55

66
"github.com/efritz/gostgres/internal/catalog/table/indexes"
7-
"github.com/efritz/gostgres/internal/execution/scan"
87
"github.com/efritz/gostgres/internal/shared/impls"
98
"github.com/efritz/gostgres/internal/shared/rows"
9+
"github.com/efritz/gostgres/internal/shared/scan"
1010
)
1111

1212
type foreignKeyConstraint struct {

internal/catalog/table/indexes/btree_scanner.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ package indexes
22

33
import (
44
"github.com/efritz/gostgres/internal/execution/queries"
5-
"github.com/efritz/gostgres/internal/execution/scan"
65
"github.com/efritz/gostgres/internal/shared/impls"
76
"github.com/efritz/gostgres/internal/shared/ordering"
87
"github.com/efritz/gostgres/internal/shared/rows"
8+
"github.com/efritz/gostgres/internal/shared/scan"
99
)
1010

11-
func (i *btreeIndex) Scanner(ctx impls.Context, opts BtreeIndexScanOptions) (impls.TIDScanner, error) {
11+
func (i *btreeIndex) Scanner(ctx impls.Context, opts BtreeIndexScanOptions) (scan.TIDScanner, error) {
1212
ctx.Log("Building BTree Index scanner")
1313

1414
stack := []*btreeNode{}
@@ -24,7 +24,7 @@ func (i *btreeIndex) Scanner(ctx impls.Context, opts BtreeIndexScanOptions) (imp
2424
return nil, err
2525
}
2626

27-
return tidScannerFunc(func() (int64, error) {
27+
return scan.TIDScannerFunc(func() (int64, error) {
2828
ctx.Log("Scanning BTree Index")
2929

3030
for current != nil || len(stack) > 0 {

internal/catalog/table/indexes/hash_scanner.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ package indexes
22

33
import (
44
"github.com/efritz/gostgres/internal/execution/queries"
5-
"github.com/efritz/gostgres/internal/execution/scan"
65
"github.com/efritz/gostgres/internal/shared/impls"
76
"github.com/efritz/gostgres/internal/shared/rows"
7+
"github.com/efritz/gostgres/internal/shared/scan"
88
"github.com/efritz/gostgres/internal/shared/utils"
99
)
1010

11-
func (i *hashIndex) Scanner(ctx impls.Context, opts HashIndexScanOptions) (impls.TIDScanner, error) {
11+
func (i *hashIndex) Scanner(ctx impls.Context, opts HashIndexScanOptions) (scan.TIDScanner, error) {
1212
ctx.Log("Building Hash Index scanner")
1313

1414
value, err := queries.Evaluate(ctx, opts.expression, rows.Row{})
@@ -20,7 +20,7 @@ func (i *hashIndex) Scanner(ctx impls.Context, opts HashIndexScanOptions) (impls
2020

2121
j := 0
2222

23-
return tidScannerFunc(func() (int64, error) {
23+
return scan.TIDScannerFunc(func() (int64, error) {
2424
ctx.Log("Scanning Hash Index")
2525

2626
if j < len(items) {

internal/catalog/table/indexes/scan.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
11
package indexes
22

3-
type tidScannerFunc func() (int64, error)
4-
5-
func (f tidScannerFunc) Scan() (int64, error) {
6-
return f()
7-
}
8-
93
type ScanDirection int
104

115
const (

internal/execution/queries/access/access.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import (
44
"github.com/efritz/gostgres/internal/execution/expressions"
55
"github.com/efritz/gostgres/internal/execution/queries"
66
"github.com/efritz/gostgres/internal/execution/queries/filter"
7-
"github.com/efritz/gostgres/internal/execution/scan"
87
"github.com/efritz/gostgres/internal/execution/serialization"
98
"github.com/efritz/gostgres/internal/shared/fields"
109
"github.com/efritz/gostgres/internal/shared/impls"
10+
"github.com/efritz/gostgres/internal/shared/scan"
1111
)
1212

1313
type accessNode struct {
@@ -86,7 +86,7 @@ func (n *accessNode) SupportsMarkRestore() bool {
8686
return false
8787
}
8888

89-
func (n *accessNode) Scanner(ctx impls.Context) (scan.Scanner, error) {
89+
func (n *accessNode) Scanner(ctx impls.Context) (scan.RowScanner, error) {
9090
ctx.Log("Building Access Node scanner")
9191

9292
scanner, err := n.strategy.Scanner(ctx)

internal/execution/queries/access/strategy.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ package access
33
import (
44
"github.com/efritz/gostgres/internal/catalog/table/indexes"
55
"github.com/efritz/gostgres/internal/execution/expressions"
6-
"github.com/efritz/gostgres/internal/execution/scan"
76
"github.com/efritz/gostgres/internal/execution/serialization"
87
"github.com/efritz/gostgres/internal/shared/impls"
8+
"github.com/efritz/gostgres/internal/shared/scan"
99
)
1010

1111
type accessStrategy interface {
1212
Serialize(w serialization.IndentWriter)
1313
Filter() impls.Expression
1414
Ordering() impls.OrderExpression
15-
Scanner(ctx impls.Context) (scan.Scanner, error)
15+
Scanner(ctx impls.Context) (scan.RowScanner, error)
1616
}
1717

1818
func selectAccessStrategy(

internal/execution/queries/access/strategy_index.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import (
44
"fmt"
55

66
"github.com/efritz/gostgres/internal/execution/expressions"
7-
"github.com/efritz/gostgres/internal/execution/scan"
87
"github.com/efritz/gostgres/internal/execution/serialization"
98
"github.com/efritz/gostgres/internal/shared/impls"
109
"github.com/efritz/gostgres/internal/shared/rows"
10+
"github.com/efritz/gostgres/internal/shared/scan"
1111
)
1212

1313
type indexAccessStrategy[O impls.ScanOptions] struct {
@@ -52,15 +52,15 @@ func (s *indexAccessStrategy[ScanOptions]) Ordering() impls.OrderExpression {
5252
return s.index.Ordering(s.opts)
5353
}
5454

55-
func (s *indexAccessStrategy[ScanOptions]) Scanner(ctx impls.Context) (scan.Scanner, error) {
55+
func (s *indexAccessStrategy[ScanOptions]) Scanner(ctx impls.Context) (scan.RowScanner, error) {
5656
ctx.Log("Building Index Access scanner Strategy")
5757

5858
tidScanner, err := s.index.Scanner(ctx, s.opts)
5959
if err != nil {
6060
return nil, err
6161
}
6262

63-
return scan.ScannerFunc(func() (rows.Row, error) {
63+
return scan.RowScannerFunc(func() (rows.Row, error) {
6464
ctx.Log("Scanning Index Access Strategy")
6565

6666
tid, err := tidScanner.Scan()

internal/execution/queries/access/strategy_table.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package access
33
import (
44
"fmt"
55

6-
"github.com/efritz/gostgres/internal/execution/scan"
76
"github.com/efritz/gostgres/internal/execution/serialization"
87
"github.com/efritz/gostgres/internal/shared/impls"
98
"github.com/efritz/gostgres/internal/shared/rows"
9+
"github.com/efritz/gostgres/internal/shared/scan"
1010
)
1111

1212
type tableAccessStrategy struct {
@@ -31,14 +31,14 @@ func (s *tableAccessStrategy) Ordering() impls.OrderExpression {
3131
return nil
3232
}
3333

34-
func (s *tableAccessStrategy) Scanner(ctx impls.Context) (scan.Scanner, error) {
34+
func (s *tableAccessStrategy) Scanner(ctx impls.Context) (scan.RowScanner, error) {
3535
ctx.Log("Building Table Access Strategy scanner")
3636

3737
tids := s.table.TIDs()
3838

3939
i := 0
4040

41-
return scan.ScannerFunc(func() (rows.Row, error) {
41+
return scan.RowScannerFunc(func() (rows.Row, error) {
4242
ctx.Log("Scanning Table Access Strategy")
4343

4444
if i >= len(tids) {

internal/execution/queries/access/values.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package access
22

33
import (
44
"github.com/efritz/gostgres/internal/execution/queries"
5-
"github.com/efritz/gostgres/internal/execution/scan"
65
"github.com/efritz/gostgres/internal/execution/serialization"
76
"github.com/efritz/gostgres/internal/shared/fields"
87
"github.com/efritz/gostgres/internal/shared/impls"
98
"github.com/efritz/gostgres/internal/shared/rows"
9+
"github.com/efritz/gostgres/internal/shared/scan"
1010
)
1111

1212
type valuesNode struct {
@@ -42,12 +42,12 @@ func (n *valuesNode) Filter() impls.Expression { return nil }
4242
func (n *valuesNode) Ordering() impls.OrderExpression { return nil }
4343
func (n *valuesNode) SupportsMarkRestore() bool { return false }
4444

45-
func (n *valuesNode) Scanner(ctx impls.Context) (scan.Scanner, error) {
45+
func (n *valuesNode) Scanner(ctx impls.Context) (scan.RowScanner, error) {
4646
ctx.Log("Building Values scanner")
4747

4848
i := 0
4949

50-
return scan.ScannerFunc(func() (rows.Row, error) {
50+
return scan.RowScannerFunc(func() (rows.Row, error) {
5151
ctx.Log("Scanning Values")
5252

5353
if i >= len(n.expressions) {

internal/execution/queries/aggregate/group.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import (
77
"github.com/efritz/gostgres/internal/execution/expressions"
88
"github.com/efritz/gostgres/internal/execution/queries"
99
"github.com/efritz/gostgres/internal/execution/queries/projection"
10-
"github.com/efritz/gostgres/internal/execution/scan"
1110
"github.com/efritz/gostgres/internal/execution/serialization"
1211
"github.com/efritz/gostgres/internal/shared/fields"
1312
"github.com/efritz/gostgres/internal/shared/impls"
1413
"github.com/efritz/gostgres/internal/shared/rows"
14+
"github.com/efritz/gostgres/internal/shared/scan"
1515
"github.com/efritz/gostgres/internal/shared/types"
1616
"github.com/efritz/gostgres/internal/shared/utils"
1717
"golang.org/x/exp/maps"
@@ -86,7 +86,7 @@ func (n *hashAggregate) SupportsMarkRestore() bool {
8686
return false
8787
}
8888

89-
func (n *hashAggregate) Scanner(ctx impls.Context) (scan.Scanner, error) {
89+
func (n *hashAggregate) Scanner(ctx impls.Context) (scan.RowScanner, error) {
9090
ctx.Log("Building Hash Aggregate scanner")
9191

9292
scanner, err := n.Node.Scanner(ctx)
@@ -136,7 +136,7 @@ func (n *hashAggregate) Scanner(ctx impls.Context) (scan.Scanner, error) {
136136
i := 0
137137
keys := maps.Keys(h)
138138

139-
return scan.ScannerFunc(func() (rows.Row, error) {
139+
return scan.RowScannerFunc(func() (rows.Row, error) {
140140
ctx.Log("Scanning Hash Aggregate")
141141

142142
if i >= len(keys) {

0 commit comments

Comments
 (0)