@@ -120,9 +120,9 @@ type connector struct {
120120 traceFunc TraceFunc
121121}
122122
123- func (c * connector ) Driver () driver.Driver { return drv {} }
124- func (c * connector ) Connect (ctx context.Context ) (driver.Conn , error ) {
125- db , err := Open (c .name , sqliteh .OpenFlagsDefault , "" )
123+ func (p * connector ) Driver () driver.Driver { return drv {} }
124+ func (p * connector ) Connect (ctx context.Context ) (driver.Conn , error ) {
125+ db , err := Open (p .name , sqliteh .OpenFlagsDefault , "" )
126126 if err != nil {
127127 if ec , ok := err .(sqliteh.ErrCode ); ok {
128128 e := & Error {
@@ -139,8 +139,16 @@ func (c *connector) Connect(ctx context.Context) (driver.Conn, error) {
139139 }
140140 return nil , err
141141 }
142+
142143 db .BusyTimeout (2 * time .Second ) // TODO: justify choice; make configurable?
143- return & conn {db : db , traceFunc : c .traceFunc }, nil
144+
145+ if err := db .AutoCheckpoint (0 ); err != nil {
146+ db .Close ()
147+ return nil , fmt .Errorf ("sqlite.Open: wal_autocheckpoint: %w" , err )
148+ }
149+
150+ c := & conn {db : db , traceFunc : p .traceFunc }
151+ return c , nil
144152}
145153
146154type conn struct {
@@ -722,7 +730,7 @@ func TxnState(sqlconn SQLConn, schema string) (state sqliteh.TxnState, err error
722730 return state , sqlconn .Raw (func (driverConn interface {}) error {
723731 c , ok := driverConn .(* conn )
724732 if ! ok {
725- return fmt .Errorf ("sqlite.BusyTimeout : sql.Conn is not the sqlite driver: %T" , driverConn )
733+ return fmt .Errorf ("sqlite.TxnState : sql.Conn is not the sqlite driver: %T" , driverConn )
726734 }
727735 state = c .db .TxnState (schema )
728736 return nil
@@ -734,7 +742,7 @@ func Checkpoint(sqlconn SQLConn, dbName string, mode sqliteh.Checkpoint) (numFra
734742 err = sqlconn .Raw (func (driverConn interface {}) error {
735743 c , ok := driverConn .(* conn )
736744 if ! ok {
737- return fmt .Errorf ("sqlite.BusyTimeout : sql.Conn is not the sqlite driver: %T" , driverConn )
745+ return fmt .Errorf ("sqlite.Checkpoint : sql.Conn is not the sqlite driver: %T" , driverConn )
738746 }
739747 numFrames , numFramesCheckpointed , err = c .db .Checkpoint (dbName , mode )
740748 return reserr (c .db , "Checkpoint" , dbName , err )
0 commit comments