Skip to content

Commit

Permalink
Merge 8257e82 into cf1a6aa
Browse files Browse the repository at this point in the history
  • Loading branch information
errx committed Nov 19, 2018
2 parents cf1a6aa + 8257e82 commit 706c515
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 20 deletions.
2 changes: 1 addition & 1 deletion stmt.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
)

var (
splitInsertRe = regexp.MustCompile(`(.+\s+VALUES)\s*(\(.+\))`)
splitInsertRe = regexp.MustCompile(`(?s)(.+\s+VALUES)\s*(\(.+\))`)
)

type stmt struct {
Expand Down
77 changes: 58 additions & 19 deletions stmt_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,25 +113,52 @@ func (s *stmtSuite) TestExec() {
}

func (s *stmtSuite) TestExecMulti() {
require := s.Require()
tx, err := s.conn.Begin()
require.NoError(err)
st, err := tx.Prepare("INSERT INTO data (i64) VALUES (?)")
require.NoError(err)
st.Exec(21)
st.Exec(22)
rows, err := s.conn.Query("SELECT i64 FROM data WHERE i64=21")
s.False(rows.Next())
s.NoError(rows.Close())
require.NoError(tx.Commit())
s.NoError(st.Close())
rows, err = s.conn.Query("SELECT i64 FROM data WHERE i64>20")
require.NoError(err)
expected := [][]interface{}{{int64(21)}, {int64(22)}}
v, err := scanValues(rows, expected[0])
s.NoError(rows.Close())
require.NoError(err)
s.Equal(expected, v)
testCases := []struct {
insertQuery string
exec1 int64
exec2 int64
query1 string
query2 string
expected [][]interface{}
}{
{
"INSERT INTO data (i64) VALUES (?)",
21,
22,
"SELECT i64 FROM data WHERE i64=21",
"SELECT i64 FROM data WHERE i64>20",
[][]interface{}{{int64(21)}, {int64(22)}},
},
{
"INSERT\nINTO\ndata\n(\ni64\n)\nVALUES\n(\n?\n)",
23,
24,
"SELECT i64 FROM data WHERE i64=23",
"SELECT i64 FROM data WHERE i64>22",
[][]interface{}{{int64(23)}, {int64(24)}},
},
}

for _, tc := range testCases {
require := s.Require()
tx, err := s.conn.Begin()
require.NoError(err)
st, err := tx.Prepare(tc.insertQuery)
require.NoError(err)
st.Exec(tc.exec1)
st.Exec(tc.exec2)
rows, err := s.conn.Query(tc.query1)
s.False(rows.Next())
s.NoError(rows.Close())
require.NoError(tx.Commit())
s.NoError(st.Close())
rows, err = s.conn.Query(tc.query2)
require.NoError(err)
v, err := scanValues(rows, tc.expected[0])
s.NoError(rows.Close())
require.NoError(err)
s.Equal(tc.expected, v)
}
}

func (s *stmtSuite) TestExecMultiRollback() {
Expand Down Expand Up @@ -194,6 +221,18 @@ func (s *stmtSuite) TestFixDoubleInterpolateInStmt() {
s.NoError(rows.Close())
}

func (s *stmtSuite) TestFixMultiLineInsert() {
q := `
INSERT INTO tbl (
a
) VALUES (
?
)
`
st := newStmt(q)
s.True(st.batchMode)
}

func TestStmt(t *testing.T) {
suite.Run(t, new(stmtSuite))
}

0 comments on commit 706c515

Please sign in to comment.