Skip to content

Commit ccffdb1

Browse files
committed
feat(dotsql): support set file size to new scanner
1 parent f8e452f commit ccffdb1

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

dotsql.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,24 @@ func Load(r io.Reader) (*DotSql, error) {
111111
return dotsql, nil
112112
}
113113

114+
// LoadSize imports sql queries from any io.Reader and use size.
115+
func LoadSize(r io.Reader, size int) (*DotSql, error) {
116+
if size < bufio.MaxScanTokenSize {
117+
size = bufio.MaxScanTokenSize
118+
}
119+
// ref: bufio.Scan_test.go func TestHugeBuffer(t *testing.T)
120+
hugeBuffer := bufio.NewScanner(bufio.NewReader(r))
121+
hugeBuffer.Buffer(make([]byte, 4096), size)
122+
scanner := &Scanner{}
123+
queries := scanner.Run(hugeBuffer)
124+
125+
dotsql := &DotSql{
126+
queries: queries,
127+
}
128+
129+
return dotsql, nil
130+
}
131+
114132
// LoadFromFile imports SQL queries from the file.
115133
func LoadFromFile(sqlFile string) (*DotSql, error) {
116134
f, err := os.Open(sqlFile)
@@ -122,6 +140,17 @@ func LoadFromFile(sqlFile string) (*DotSql, error) {
122140
return Load(f)
123141
}
124142

143+
// LoadFromFileSize imports SQL queries from the file and use size.
144+
func LoadFromFileSize(sqlFile string, size int) (*DotSql, error) {
145+
f, err := os.Open(sqlFile)
146+
if err != nil {
147+
return nil, err
148+
}
149+
defer f.Close()
150+
151+
return LoadSize(f, size)
152+
}
153+
125154
// LoadFromString imports SQL queries from the string.
126155
func LoadFromString(sql string) (*DotSql, error) {
127156
buf := bytes.NewBufferString(sql)

0 commit comments

Comments
 (0)