Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gosqlite
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gosqlite
Commits
b12b6197
Commit
b12b6197
authored
Mar 19, 2014
by
gwenn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve test coverage.
parent
757b392d
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
76 additions
and
26 deletions
+76
-26
blob.go
blob.go
+1
-1
blob_test.go
blob_test.go
+16
-0
function_test.go
function_test.go
+8
-1
meta.go
meta.go
+5
-5
meta_test.go
meta_test.go
+4
-4
pragma.go
pragma.go
+20
-1
pragma_test.go
pragma_test.go
+4
-0
sqlite_test.go
sqlite_test.go
+7
-0
stmt.go
stmt.go
+0
-4
stmt_test.go
stmt_test.go
+10
-0
trace.go
trace.go
+1
-1
util.go
util.go
+0
-9
No files found.
blob.go
View file @
b12b6197
...
@@ -152,7 +152,7 @@ func (r *BlobReader) Seek(offset int64, whence int) (int64, error) {
...
@@ -152,7 +152,7 @@ func (r *BlobReader) Seek(offset int64, whence int) (int64, error) {
// (See http://sqlite.org/c3ref/blob_bytes.html)
// (See http://sqlite.org/c3ref/blob_bytes.html)
func
(
r
*
BlobReader
)
Size
()
(
int32
,
error
)
{
func
(
r
*
BlobReader
)
Size
()
(
int32
,
error
)
{
if
r
.
bl
==
nil
{
if
r
.
bl
==
nil
{
return
0
,
errors
.
New
(
"blob
reader
already closed"
)
return
0
,
errors
.
New
(
"blob already closed"
)
}
}
if
r
.
size
<
0
{
if
r
.
size
<
0
{
r
.
size
=
int32
(
C
.
sqlite3_blob_bytes
(
r
.
bl
))
r
.
size
=
int32
(
C
.
sqlite3_blob_bytes
(
r
.
bl
))
...
...
blob_test.go
View file @
b12b6197
...
@@ -37,6 +37,10 @@ func TestBlob(t *testing.T) {
...
@@ -37,6 +37,10 @@ func TestBlob(t *testing.T) {
checkNoError
(
t
,
err
,
"blob write error: %s"
)
checkNoError
(
t
,
err
,
"blob write error: %s"
)
//bw.Close()
//bw.Close()
_
,
err
=
bw
.
Write
([]
byte
(
"5678901"
))
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
err
=
bw
.
Reopen
(
rowid
)
err
=
bw
.
Reopen
(
rowid
)
checkNoError
(
t
,
err
,
"blob reopen error: %s"
)
checkNoError
(
t
,
err
,
"blob reopen error: %s"
)
bw
.
Close
()
bw
.
Close
()
...
@@ -81,6 +85,18 @@ func TestBlob(t *testing.T) {
...
@@ -81,6 +85,18 @@ func TestBlob(t *testing.T) {
_
,
err
=
br
.
Size
()
_
,
err
=
br
.
Size
()
assert
.
T
(
t
,
err
!=
nil
)
assert
.
T
(
t
,
err
!=
nil
)
_
,
err
=
br
.
Read
(
content
)
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
err
=
bw
.
Reopen
(
-
1
)
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
_
,
err
=
bw
.
Write
(
content
)
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
}
}
func
TestBlobMisuse
(
t
*
testing
.
T
)
{
func
TestBlobMisuse
(
t
*
testing
.
T
)
{
...
...
function_test.go
View file @
b12b6197
...
@@ -75,7 +75,7 @@ func TestRegexpFunction(t *testing.T) {
...
@@ -75,7 +75,7 @@ func TestRegexpFunction(t *testing.T) {
defer
checkClose
(
db
,
t
)
defer
checkClose
(
db
,
t
)
err
:=
db
.
CreateScalarFunction
(
"regexp"
,
2
,
true
,
nil
,
re
,
reDestroy
)
err
:=
db
.
CreateScalarFunction
(
"regexp"
,
2
,
true
,
nil
,
re
,
reDestroy
)
checkNoError
(
t
,
err
,
"couldn't create function: %s"
)
checkNoError
(
t
,
err
,
"couldn't create function: %s"
)
s
,
err
:=
db
.
Prepare
(
"SELECT regexp('l.s[aeiouy]', name) from (SELECT 'lisa' AS name UNION ALL SELECT 'bart')"
)
s
,
err
:=
db
.
Prepare
(
"SELECT regexp('l.s[aeiouy]', name) from (SELECT 'lisa' AS name UNION ALL SELECT 'bart'
UNION ALL SELECT NULL
)"
)
checkNoError
(
t
,
err
,
"couldn't prepare statement: %s"
)
checkNoError
(
t
,
err
,
"couldn't prepare statement: %s"
)
defer
checkFinalize
(
s
,
t
)
defer
checkFinalize
(
s
,
t
)
...
@@ -94,6 +94,13 @@ func TestRegexpFunction(t *testing.T) {
...
@@ -94,6 +94,13 @@ func TestRegexpFunction(t *testing.T) {
checkNoError
(
t
,
err
,
"couldn't scan result: %s"
)
checkNoError
(
t
,
err
,
"couldn't scan result: %s"
)
assert
.
Equal
(
t
,
0
,
i
)
assert
.
Equal
(
t
,
0
,
i
)
assert
.
T
(
t
,
reused
,
"unexpected reused state"
)
assert
.
T
(
t
,
reused
,
"unexpected reused state"
)
if
b
:=
Must
(
s
.
Next
());
!
b
{
t
.
Fatalf
(
"No result"
)
}
i
,
_
,
err
=
s
.
ScanInt
(
0
)
checkNoError
(
t
,
err
,
"couldn't scan result: %s"
)
assert
.
Equal
(
t
,
0
,
i
)
}
}
func
user
(
ctx
*
ScalarContext
,
nArg
int
)
{
func
user
(
ctx
*
ScalarContext
,
nArg
int
)
{
...
...
meta.go
View file @
b12b6197
...
@@ -26,7 +26,7 @@ func (c *Conn) Databases() (map[string]string, error) {
...
@@ -26,7 +26,7 @@ func (c *Conn) Databases() (map[string]string, error) {
defer
s
.
finalize
()
defer
s
.
finalize
()
var
databases
=
make
(
map
[
string
]
string
)
var
databases
=
make
(
map
[
string
]
string
)
var
name
,
file
string
var
name
,
file
string
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
if
err
=
s
.
Scan
(
nil
,
&
name
,
&
file
);
err
!=
nil
{
if
err
=
s
.
Scan
(
nil
,
&
name
,
&
file
);
err
!=
nil
{
return
return
}
}
...
@@ -154,7 +154,7 @@ func (c *Conn) Columns(dbName, table string) ([]Column, error) {
...
@@ -154,7 +154,7 @@ func (c *Conn) Columns(dbName, table string) ([]Column, error) {
}
}
defer
s
.
finalize
()
defer
s
.
finalize
()
var
columns
=
make
([]
Column
,
0
,
20
)
var
columns
=
make
([]
Column
,
0
,
20
)
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
c
:=
Column
{}
c
:=
Column
{}
if
err
=
s
.
Scan
(
&
c
.
Cid
,
&
c
.
Name
,
&
c
.
DataType
,
&
c
.
NotNull
,
&
c
.
DfltValue
,
&
c
.
Pk
);
err
!=
nil
{
if
err
=
s
.
Scan
(
&
c
.
Cid
,
&
c
.
Name
,
&
c
.
DataType
,
&
c
.
NotNull
,
&
c
.
DfltValue
,
&
c
.
Pk
);
err
!=
nil
{
return
return
...
@@ -296,7 +296,7 @@ func (c *Conn) ForeignKeys(dbName, table string) (map[int]*ForeignKey, error) {
...
@@ -296,7 +296,7 @@ func (c *Conn) ForeignKeys(dbName, table string) (map[int]*ForeignKey, error) {
var
fks
=
make
(
map
[
int
]
*
ForeignKey
)
var
fks
=
make
(
map
[
int
]
*
ForeignKey
)
var
id
,
seq
int
var
id
,
seq
int
var
ref
,
from
,
to
string
var
ref
,
from
,
to
string
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
if
err
=
s
.
NamedScan
(
"id"
,
&
id
,
"seq"
,
&
seq
,
"table"
,
&
ref
,
"from"
,
&
from
,
"to"
,
&
to
);
err
!=
nil
{
if
err
=
s
.
NamedScan
(
"id"
,
&
id
,
"seq"
,
&
seq
,
"table"
,
&
ref
,
"from"
,
&
from
,
"to"
,
&
to
);
err
!=
nil
{
return
return
}
}
...
@@ -338,7 +338,7 @@ func (c *Conn) TableIndexes(dbName, table string) ([]Index, error) {
...
@@ -338,7 +338,7 @@ func (c *Conn) TableIndexes(dbName, table string) ([]Index, error) {
}
}
defer
s
.
finalize
()
defer
s
.
finalize
()
var
indexes
=
make
([]
Index
,
0
,
5
)
var
indexes
=
make
([]
Index
,
0
,
5
)
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
i
:=
Index
{}
i
:=
Index
{}
if
err
=
s
.
Scan
(
nil
,
&
i
.
Name
,
&
i
.
Unique
);
err
!=
nil
{
if
err
=
s
.
Scan
(
nil
,
&
i
.
Name
,
&
i
.
Unique
);
err
!=
nil
{
return
return
...
@@ -368,7 +368,7 @@ func (c *Conn) IndexColumns(dbName, index string) ([]Column, error) {
...
@@ -368,7 +368,7 @@ func (c *Conn) IndexColumns(dbName, index string) ([]Column, error) {
}
}
defer
s
.
finalize
()
defer
s
.
finalize
()
var
columns
=
make
([]
Column
,
0
,
5
)
var
columns
=
make
([]
Column
,
0
,
5
)
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
c
:=
Column
{}
c
:=
Column
{}
if
err
=
s
.
Scan
(
nil
,
&
c
.
Cid
,
&
c
.
Name
);
err
!=
nil
{
if
err
=
s
.
Scan
(
nil
,
&
c
.
Cid
,
&
c
.
Name
);
err
!=
nil
{
return
return
...
...
meta_test.go
View file @
b12b6197
...
@@ -114,12 +114,12 @@ func TestColumns(t *testing.T) {
...
@@ -114,12 +114,12 @@ func TestColumns(t *testing.T) {
columns
,
err
=
db
.
Columns
(
"main"
,
"test"
)
columns
,
err
=
db
.
Columns
(
"main"
,
"test"
)
checkNoError
(
t
,
err
,
"error listing columns: %s"
)
checkNoError
(
t
,
err
,
"error listing columns: %s"
)
columns
,
err
=
db
.
Columns
(
"bim"
,
"test"
)
_
,
err
=
db
.
Columns
(
"bim"
,
"test"
)
assert
.
T
(
t
,
err
!=
nil
,
"expected error"
)
assert
.
T
(
t
,
err
!=
nil
,
"expected error"
)
//println(err.Error())
//println(err.Error())
columns
,
err
=
db
.
Columns
(
""
,
"bim"
)
_
,
err
=
db
.
Columns
(
""
,
"bim"
)
assert
.
T
(
t
,
err
!=
nil
,
"expected error"
)
//
assert.T(t, err != nil, "expected error")
//println(err.Error())
//println(err.Error())
}
}
...
@@ -168,7 +168,7 @@ func TestForeignKeys(t *testing.T) {
...
@@ -168,7 +168,7 @@ func TestForeignKeys(t *testing.T) {
//println(err.Error())
//println(err.Error())
_
,
err
=
db
.
ForeignKeys
(
""
,
"bim"
)
_
,
err
=
db
.
ForeignKeys
(
""
,
"bim"
)
assert
.
T
(
t
,
err
!=
nil
)
//
assert.T(t, err != nil)
//println(err.Error())
//println(err.Error())
}
}
...
...
pragma.go
View file @
b12b6197
...
@@ -170,7 +170,7 @@ func (c *Conn) ForeignKeyCheck(dbName, table string) ([]FkViolation, error) {
...
@@ -170,7 +170,7 @@ func (c *Conn) ForeignKeyCheck(dbName, table string) ([]FkViolation, error) {
defer
s
.
finalize
()
defer
s
.
finalize
()
// table|rowid|parent|fkid
// table|rowid|parent|fkid
var
violations
=
make
([]
FkViolation
,
0
,
20
)
var
violations
=
make
([]
FkViolation
,
0
,
20
)
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
v
:=
FkViolation
{}
v
:=
FkViolation
{}
if
err
=
s
.
Scan
(
&
v
.
Table
,
&
v
.
RowId
,
&
v
.
Parent
,
&
v
.
FkId
);
err
!=
nil
{
if
err
=
s
.
Scan
(
&
v
.
Table
,
&
v
.
RowId
,
&
v
.
Parent
,
&
v
.
FkId
);
err
!=
nil
{
return
return
...
@@ -244,3 +244,22 @@ func (c *Conn) oneValue(query string, value interface{}) error { // no cache
...
@@ -244,3 +244,22 @@ func (c *Conn) oneValue(query string, value interface{}) error { // no cache
}
}
return
s
.
error
(
rv
,
fmt
.
Sprintf
(
"Conn.oneValue(%q)"
,
query
))
return
s
.
error
(
rv
,
fmt
.
Sprintf
(
"Conn.oneValue(%q)"
,
query
))
}
}
func
(
s
*
Stmt
)
execQuery
(
rowCallbackHandler
func
(
s
*
Stmt
)
error
,
args
...
interface
{})
error
{
// no check on column count
if
len
(
args
)
>
0
{
err
:=
s
.
Bind
(
args
...
)
if
err
!=
nil
{
return
err
}
}
for
{
if
ok
,
err
:=
s
.
Next
();
err
!=
nil
{
return
err
}
else
if
!
ok
{
break
}
if
err
:=
rowCallbackHandler
(
s
);
err
!=
nil
{
return
err
}
}
return
nil
}
pragma_test.go
View file @
b12b6197
...
@@ -70,6 +70,10 @@ func TestLockingMode(t *testing.T) {
...
@@ -70,6 +70,10 @@ func TestLockingMode(t *testing.T) {
mode
,
err
:=
db
.
LockingMode
(
""
)
mode
,
err
:=
db
.
LockingMode
(
""
)
checkNoError
(
t
,
err
,
"Error reading locking-mode of database: %s"
)
checkNoError
(
t
,
err
,
"Error reading locking-mode of database: %s"
)
assert
.
Equal
(
t
,
"normal"
,
mode
)
assert
.
Equal
(
t
,
"normal"
,
mode
)
_
,
err
=
db
.
LockingMode
(
"bim"
)
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
}
}
func
TestSetLockingMode
(
t
*
testing
.
T
)
{
func
TestSetLockingMode
(
t
*
testing
.
T
)
{
...
...
sqlite_test.go
View file @
b12b6197
...
@@ -23,6 +23,13 @@ func checkNoError(t *testing.T, err error, format string) {
...
@@ -23,6 +23,13 @@ func checkNoError(t *testing.T, err error, format string) {
}
}
}
}
func
Must
(
b
bool
,
err
error
)
bool
{
if
err
!=
nil
{
panic
(
err
)
}
return
b
}
func
open
(
t
*
testing
.
T
)
*
Conn
{
func
open
(
t
*
testing
.
T
)
*
Conn
{
db
,
err
:=
Open
(
":memory:"
,
OpenReadWrite
,
OpenCreate
,
OpenFullMutex
/*OpenNoMutex*/
)
db
,
err
:=
Open
(
":memory:"
,
OpenReadWrite
,
OpenCreate
,
OpenFullMutex
/*OpenNoMutex*/
)
checkNoError
(
t
,
err
,
"couldn't open database file: %s"
)
checkNoError
(
t
,
err
,
"couldn't open database file: %s"
)
...
...
stmt.go
View file @
b12b6197
...
@@ -437,10 +437,6 @@ func (s *Stmt) BindReflect(index int, value interface{}) error {
...
@@ -437,10 +437,6 @@ func (s *Stmt) BindReflect(index int, value interface{}) error {
// }
// }
// err = s.Scan(&fnum, &inum, &sstr)
// err = s.Scan(&fnum, &inum, &sstr)
// }
// }
// With panic on error:
// for Must(s.Next()) {
// err := s.Scan(&fnum, &inum, &sstr)
// }
//
//
// (See http://sqlite.org/c3ref/step.html)
// (See http://sqlite.org/c3ref/step.html)
func
(
s
*
Stmt
)
Next
()
(
bool
,
error
)
{
func
(
s
*
Stmt
)
Next
()
(
bool
,
error
)
{
...
...
stmt_test.go
View file @
b12b6197
...
@@ -683,6 +683,16 @@ func TestBindAndScanReflect(t *testing.T) {
...
@@ -683,6 +683,16 @@ func TestBindAndScanReflect(t *testing.T) {
_
,
err
=
is
.
ScanReflect
(
0
,
&
enum
)
_
,
err
=
is
.
ScanReflect
(
0
,
&
enum
)
assert
.
T
(
t
,
err
!=
nil
)
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
//println(err.Error())
var
ut
error
_
,
err
=
is
.
ScanReflect
(
0
,
&
ut
)
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
var
ui
uint64
=
math
.
MaxUint64
err
=
is
.
BindReflect
(
1
,
ui
)
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
}
}
func
TestSelect
(
t
*
testing
.
T
)
{
func
TestSelect
(
t
*
testing
.
T
)
{
...
...
trace.go
View file @
b12b6197
...
@@ -448,7 +448,7 @@ func (s *Stmt) ExplainQueryPlan(w io.Writer) error {
...
@@ -448,7 +448,7 @@ func (s *Stmt) ExplainQueryPlan(w io.Writer) error {
var
selectid
,
order
,
from
int
var
selectid
,
order
,
from
int
var
detail
string
var
detail
string
err
=
sExplain
.
Select
(
func
(
s
*
Stmt
)
error
{
err
=
sExplain
.
execQuery
(
func
(
s
*
Stmt
)
error
{
if
err
:=
s
.
Scan
(
&
selectid
,
&
order
,
&
from
,
&
detail
);
err
!=
nil
{
if
err
:=
s
.
Scan
(
&
selectid
,
&
order
,
&
from
,
&
detail
);
err
!=
nil
{
return
err
return
err
}
}
...
...
util.go
View file @
b12b6197
...
@@ -54,15 +54,6 @@ func Mprintf2(format string, arg1, arg2 string) string {
...
@@ -54,15 +54,6 @@ func Mprintf2(format string, arg1, arg2 string) string {
return
C
.
GoString
(
zSQL
)
return
C
.
GoString
(
zSQL
)
}
}
// Must is a helper that wraps a call to a function returning (bool, os.Error)
// and panics if the error is non-nil.
func
Must
(
b
bool
,
err
error
)
bool
{
if
err
!=
nil
{
panic
(
err
)
}
return
b
}
func
btocint
(
b
bool
)
C
.
int
{
func
btocint
(
b
bool
)
C
.
int
{
if
b
{
if
b
{
return
1
return
1
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment