fix(sql): Allow sqlite on Windows (amd64 and arm64) (#13865)
This commit is contained in:
parent
47c5665f50
commit
c238ebb271
|
|
@ -1,4 +1,4 @@
|
||||||
//go:build linux && freebsd && darwin && (!mips || !mips64)
|
//go:build !mips && !mipsle && !mips64 && !mips64le && !(windows && 386)
|
||||||
|
|
||||||
package sql
|
package sql
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -175,9 +175,7 @@ docs](https://github.com/jackc/pgx) for more details.
|
||||||
|
|
||||||
### modernc.org/sqlite
|
### modernc.org/sqlite
|
||||||
|
|
||||||
This driver is not available on all operating systems and architectures. It is
|
It is not supported on windows/386, mips, and mips64 platforms.
|
||||||
only included in Linux builds on amd64, 386, arm64, arm, and Darwin on amd64. It
|
|
||||||
is not available for Windows, FreeBSD, and other Linux and Darwin platforms.
|
|
||||||
|
|
||||||
The DSN is a filename or url with scheme "file:". See the [driver
|
The DSN is a filename or url with scheme "file:". See the [driver
|
||||||
docs](https://modernc.org/sqlite) for details.
|
docs](https://modernc.org/sqlite) for details.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
//go:build linux && freebsd && darwin && (!mips || !mips64)
|
//go:build !mips && !mipsle && !mips64 && !mips64le && !(windows && 386)
|
||||||
|
|
||||||
package sql
|
package sql
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
//go:build linux && freebsd && (!mips || !mips64)
|
//go:build !mips && !mipsle && !mips64 && !mips64le && !(windows && 386)
|
||||||
|
|
||||||
package sql
|
package sql
|
||||||
|
|
||||||
import (
|
import (
|
||||||
gosql "database/sql"
|
gosql "database/sql"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
@ -14,7 +15,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSqlite(t *testing.T) {
|
func TestSqlite(t *testing.T) {
|
||||||
outDir := t.TempDir()
|
outDir := os.TempDir()
|
||||||
|
defer os.Remove(outDir)
|
||||||
|
|
||||||
dbfile := filepath.Join(outDir, "db")
|
dbfile := filepath.Join(outDir, "db")
|
||||||
|
|
||||||
|
|
@ -49,11 +51,13 @@ func TestSqlite(t *testing.T) {
|
||||||
// Check that tables were created as expected
|
// Check that tables were created as expected
|
||||||
rows, err = db.Query("select sql from sqlite_master")
|
rows, err = db.Query("select sql from sqlite_master")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
defer rows.Close()
|
||||||
var sql string
|
var sql string
|
||||||
require.True(t, rows.Next())
|
require.True(t, rows.Next())
|
||||||
require.NoError(t, rows.Scan(&sql))
|
require.NoError(t, rows.Scan(&sql))
|
||||||
require.Equal(t,
|
require.Equal(t,
|
||||||
`CREATE TABLE "metric_one"("timestamp" TIMESTAMP,"tag_one" TEXT,"tag_two" TEXT,"int64_one" INT,"int64_two" INT)`,
|
`CREATE TABLE "metric_one"("timestamp" TIMESTAMP,"tag_one" TEXT,"tag_two" TEXT,"int64_one" INT,`+
|
||||||
|
`"int64_two" INT,"bool_one" BOOL,"bool_two" BOOL,"uint64_one" INT UNSIGNED,"float64_one" DOUBLE)`,
|
||||||
sql,
|
sql,
|
||||||
)
|
)
|
||||||
require.True(t, rows.Next())
|
require.True(t, rows.Next())
|
||||||
|
|
@ -69,7 +73,6 @@ func TestSqlite(t *testing.T) {
|
||||||
sql,
|
sql,
|
||||||
)
|
)
|
||||||
require.False(t, rows.Next())
|
require.False(t, rows.Next())
|
||||||
require.NoError(t, rows.Close())
|
|
||||||
|
|
||||||
// sqlite stores dates as strings. They may be in the local
|
// sqlite stores dates as strings. They may be in the local
|
||||||
// timezone. The test needs to parse them back into a time.Time to
|
// timezone. The test needs to parse them back into a time.Time to
|
||||||
|
|
@ -79,15 +82,16 @@ func TestSqlite(t *testing.T) {
|
||||||
var actualTime time.Time
|
var actualTime time.Time
|
||||||
|
|
||||||
// Check contents of tables
|
// Check contents of tables
|
||||||
rows, err = db.Query("select timestamp, tag_one, tag_two, int64_one, int64_two from metric_one")
|
rows2, err := db.Query("select timestamp, tag_one, tag_two, int64_one, int64_two from metric_one")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.True(t, rows.Next())
|
defer rows2.Close()
|
||||||
|
require.True(t, rows2.Next())
|
||||||
var (
|
var (
|
||||||
a string
|
a string
|
||||||
b, c string
|
b, c string
|
||||||
d, e int64
|
d, e int64
|
||||||
)
|
)
|
||||||
require.NoError(t, rows.Scan(&a, &b, &c, &d, &e))
|
require.NoError(t, rows2.Scan(&a, &b, &c, &d, &e))
|
||||||
actualTime, err = time.Parse(timeLayout, a)
|
actualTime, err = time.Parse(timeLayout, a)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, ts, actualTime.UTC())
|
require.Equal(t, ts, actualTime.UTC())
|
||||||
|
|
@ -95,36 +99,35 @@ func TestSqlite(t *testing.T) {
|
||||||
require.Equal(t, "tag2", c)
|
require.Equal(t, "tag2", c)
|
||||||
require.Equal(t, int64(1234), d)
|
require.Equal(t, int64(1234), d)
|
||||||
require.Equal(t, int64(2345), e)
|
require.Equal(t, int64(2345), e)
|
||||||
require.False(t, rows.Next())
|
require.False(t, rows2.Next())
|
||||||
require.NoError(t, rows.Close())
|
|
||||||
|
|
||||||
rows, err = db.Query("select timestamp, tag_three, string_one from metric_two")
|
rows3, err := db.Query("select timestamp, tag_three, string_one from metric_two")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.True(t, rows.Next())
|
defer rows3.Close()
|
||||||
|
require.True(t, rows3.Next())
|
||||||
var (
|
var (
|
||||||
f, g, h string
|
f, g, h string
|
||||||
)
|
)
|
||||||
require.NoError(t, rows.Scan(&f, &g, &h))
|
require.NoError(t, rows3.Scan(&f, &g, &h))
|
||||||
actualTime, err = time.Parse(timeLayout, f)
|
actualTime, err = time.Parse(timeLayout, f)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, ts, actualTime.UTC())
|
require.Equal(t, ts, actualTime.UTC())
|
||||||
require.Equal(t, "tag3", g)
|
require.Equal(t, "tag3", g)
|
||||||
require.Equal(t, "string1", h)
|
require.Equal(t, "string1", h)
|
||||||
require.False(t, rows.Next())
|
require.False(t, rows3.Next())
|
||||||
require.NoError(t, rows.Close())
|
|
||||||
|
|
||||||
rows, err = db.Query(`select timestamp, "tag four", "string two" from "metric three"`)
|
rows4, err := db.Query(`select timestamp, "tag four", "string two" from "metric three"`)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.True(t, rows.Next())
|
defer rows4.Close()
|
||||||
|
require.True(t, rows4.Next())
|
||||||
var (
|
var (
|
||||||
i, j, k string
|
i, j, k string
|
||||||
)
|
)
|
||||||
require.NoError(t, rows.Scan(&i, &j, &k))
|
require.NoError(t, rows4.Scan(&i, &j, &k))
|
||||||
actualTime, err = time.Parse(timeLayout, i)
|
actualTime, err = time.Parse(timeLayout, i)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, ts, actualTime.UTC())
|
require.Equal(t, ts, actualTime.UTC())
|
||||||
require.Equal(t, "tag4", j)
|
require.Equal(t, "tag4", j)
|
||||||
require.Equal(t, "string2", k)
|
require.Equal(t, "string2", k)
|
||||||
require.False(t, rows.Next())
|
require.False(t, rows4.Next())
|
||||||
require.NoError(t, rows.Close())
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue