forked from mattn/go-sqlite3
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'mattn/master' into merge-upstream
- Loading branch information
Showing
65 changed files
with
6,220 additions
and
2,838 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
name: Go | ||
|
||
on: [push, pull_request] | ||
|
||
jobs: | ||
|
||
test: | ||
name: Test | ||
runs-on: ${{ matrix.os }} | ||
defaults: | ||
run: | ||
shell: bash | ||
|
||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-latest] | ||
go: ['1.19', '1.20', '1.21'] | ||
fail-fast: false | ||
env: | ||
OS: ${{ matrix.os }} | ||
GO: ${{ matrix.go }} | ||
steps: | ||
- if: startsWith(matrix.os, 'macos') | ||
run: brew update | ||
|
||
- uses: actions/setup-go@v2 | ||
with: | ||
go-version: ${{ matrix.go }} | ||
|
||
- name: Get Build Tools | ||
run: | | ||
GO111MODULE=on go install github.com/ory/go-acc@latest | ||
- name: Add $GOPATH/bin to $PATH | ||
run: | | ||
echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH" | ||
- uses: actions/checkout@v2 | ||
|
||
- name: 'Tags: default' | ||
run: go-acc . -- -race -v -tags "" | ||
|
||
- name: 'Tags: libsqlite3' | ||
run: go-acc . -- -race -v -tags "libsqlite3" | ||
|
||
- name: 'Tags: full' | ||
run: go-acc . -- -race -v -tags "sqlite_allow_uri_authority sqlite_app_armor sqlite_column_metadata sqlite_foreign_keys sqlite_fts5 sqlite_icu sqlite_introspect sqlite_json sqlite_math_functions sqlite_os_trace sqlite_preupdate_hook sqlite_secure_delete sqlite_see sqlite_stat4 sqlite_trace sqlite_unlock_notify sqlite_userauth sqlite_vacuum_incr sqlite_vtable" | ||
|
||
- name: 'Tags: vacuum' | ||
run: go-acc . -- -race -v -tags "sqlite_vacuum_full" | ||
|
||
- name: Upload coverage to Codecov | ||
uses: codecov/codecov-action@v1 | ||
with: | ||
env_vars: OS,GO | ||
file: coverage.txt | ||
|
||
test-windows: | ||
name: Test for Windows | ||
runs-on: windows-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
|
||
strategy: | ||
matrix: | ||
go: ['1.19', '1.20', '1.21'] | ||
fail-fast: false | ||
env: | ||
OS: windows-latest | ||
GO: ${{ matrix.go }} | ||
steps: | ||
- uses: msys2/setup-msys2@v2 | ||
with: | ||
update: true | ||
install: mingw-w64-x86_64-toolchain mingw-w64-x86_64-sqlite3 | ||
msystem: MINGW64 | ||
path-type: inherit | ||
|
||
- uses: actions/setup-go@v2 | ||
with: | ||
go-version: ${{ matrix.go }} | ||
|
||
- name: Add $GOPATH/bin to $PATH | ||
run: | | ||
echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH" | ||
shell: msys2 {0} | ||
|
||
- uses: actions/checkout@v2 | ||
|
||
- name: 'Tags: default' | ||
run: go build -race -v -tags "" | ||
shell: msys2 {0} | ||
|
||
- name: 'Tags: libsqlite3' | ||
run: go build -race -v -tags "libsqlite3" | ||
shell: msys2 {0} | ||
|
||
- name: 'Tags: full' | ||
run: | | ||
echo 'skip this test' | ||
echo go build -race -v -tags "sqlite_allow_uri_authority sqlite_app_armor sqlite_column_metadata sqlite_foreign_keys sqlite_fts5 sqlite_icu sqlite_introspect sqlite_json sqlite_math_functions sqlite_preupdate_hook sqlite_secure_delete sqlite_see sqlite_stat4 sqlite_trace sqlite_unlock_notify sqlite_userauth sqlite_vacuum_incr sqlite_vtable" | ||
shell: msys2 {0} | ||
|
||
- name: 'Tags: vacuum' | ||
run: go build -race -v -tags "sqlite_vacuum_full" | ||
shell: msys2 {0} | ||
|
||
- name: Upload coverage to Codecov | ||
uses: codecov/codecov-action@v2 | ||
with: | ||
env_vars: OS,GO | ||
file: coverage.txt | ||
|
||
# based on: github.com/koron-go/_skeleton/.github/workflows/go.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
package main | ||
|
||
import ( | ||
"database/sql" | ||
"database/sql/driver" | ||
"encoding/json" | ||
"fmt" | ||
_ "github.com/mattn/go-sqlite3" | ||
"log" | ||
"os" | ||
) | ||
|
||
type Tag struct { | ||
Name string `json:"name"` | ||
Country string `json:"country"` | ||
} | ||
|
||
func (t *Tag) Scan(value interface{}) error { | ||
return json.Unmarshal([]byte(value.(string)), t) | ||
} | ||
|
||
func (t *Tag) Value() (driver.Value, error) { | ||
b, err := json.Marshal(t) | ||
return string(b), err | ||
} | ||
|
||
func main() { | ||
os.Remove("./foo.db") | ||
|
||
db, err := sql.Open("sqlite3", "./foo.db") | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
defer db.Close() | ||
|
||
_, err = db.Exec(`create table foo (tag jsonb)`) | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
|
||
stmt, err := db.Prepare("insert into foo(tag) values(?)") | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
defer stmt.Close() | ||
_, err = stmt.Exec(`{"name": "mattn", "country": "japan"}`) | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
_, err = stmt.Exec(`{"name": "michael", "country": "usa"}`) | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
|
||
var country string | ||
err = db.QueryRow("select tag->>'country' from foo where tag->>'name' = 'mattn'").Scan(&country) | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
fmt.Println(country) | ||
|
||
var tag Tag | ||
err = db.QueryRow("select tag from foo where tag->>'name' = 'mattn'").Scan(&tag) | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
|
||
fmt.Println(tag.Name) | ||
|
||
tag.Country = "日本" | ||
_, err = db.Exec(`update foo set tag = ? where tag->>'name' == 'mattn'`, &tag) | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
|
||
err = db.QueryRow("select tag->>'country' from foo where tag->>'name' = 'mattn'").Scan(&country) | ||
if err != nil { | ||
log.Fatal(err) | ||
} | ||
fmt.Println(country) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.