@@ -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.
115133func 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.
126155func LoadFromString (sql string ) (* DotSql , error ) {
127156 buf := bytes .NewBufferString (sql )
0 commit comments