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) {
// (See http://sqlite.org/c3ref/blob_bytes.html)
func
(
r
*
BlobReader
)
Size
()
(
int32
,
error
)
{
if
r
.
bl
==
nil
{
return
0
,
errors
.
New
(
"blob
reader
already closed"
)
return
0
,
errors
.
New
(
"blob already closed"
)
}
if
r
.
size
<
0
{
r
.
size
=
int32
(
C
.
sqlite3_blob_bytes
(
r
.
bl
))
...
...
blob_test.go
View file @
b12b6197
...
...
@@ -37,6 +37,10 @@ func TestBlob(t *testing.T) {
checkNoError
(
t
,
err
,
"blob write error: %s"
)
//bw.Close()
_
,
err
=
bw
.
Write
([]
byte
(
"5678901"
))
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
err
=
bw
.
Reopen
(
rowid
)
checkNoError
(
t
,
err
,
"blob reopen error: %s"
)
bw
.
Close
()
...
...
@@ -81,6 +85,18 @@ func TestBlob(t *testing.T) {
_
,
err
=
br
.
Size
()
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
)
{
...
...
function_test.go
View file @
b12b6197
...
...
@@ -75,7 +75,7 @@ func TestRegexpFunction(t *testing.T) {
defer
checkClose
(
db
,
t
)
err
:=
db
.
CreateScalarFunction
(
"regexp"
,
2
,
true
,
nil
,
re
,
reDestroy
)
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"
)
defer
checkFinalize
(
s
,
t
)
...
...
@@ -94,6 +94,13 @@ func TestRegexpFunction(t *testing.T) {
checkNoError
(
t
,
err
,
"couldn't scan result: %s"
)
assert
.
Equal
(
t
,
0
,
i
)
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
)
{
...
...
meta.go
View file @
b12b6197
...
...
@@ -26,7 +26,7 @@ func (c *Conn) Databases() (map[string]string, error) {
defer
s
.
finalize
()
var
databases
=
make
(
map
[
string
]
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
{
return
}
...
...
@@ -154,7 +154,7 @@ func (c *Conn) Columns(dbName, table string) ([]Column, error) {
}
defer
s
.
finalize
()
var
columns
=
make
([]
Column
,
0
,
20
)
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
c
:=
Column
{}
if
err
=
s
.
Scan
(
&
c
.
Cid
,
&
c
.
Name
,
&
c
.
DataType
,
&
c
.
NotNull
,
&
c
.
DfltValue
,
&
c
.
Pk
);
err
!=
nil
{
return
...
...
@@ -296,7 +296,7 @@ func (c *Conn) ForeignKeys(dbName, table string) (map[int]*ForeignKey, error) {
var
fks
=
make
(
map
[
int
]
*
ForeignKey
)
var
id
,
seq
int
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
{
return
}
...
...
@@ -338,7 +338,7 @@ func (c *Conn) TableIndexes(dbName, table string) ([]Index, error) {
}
defer
s
.
finalize
()
var
indexes
=
make
([]
Index
,
0
,
5
)
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
i
:=
Index
{}
if
err
=
s
.
Scan
(
nil
,
&
i
.
Name
,
&
i
.
Unique
);
err
!=
nil
{
return
...
...
@@ -368,7 +368,7 @@ func (c *Conn) IndexColumns(dbName, index string) ([]Column, error) {
}
defer
s
.
finalize
()
var
columns
=
make
([]
Column
,
0
,
5
)
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
c
:=
Column
{}
if
err
=
s
.
Scan
(
nil
,
&
c
.
Cid
,
&
c
.
Name
);
err
!=
nil
{
return
...
...
meta_test.go
View file @
b12b6197
...
...
@@ -114,12 +114,12 @@ func TestColumns(t *testing.T) {
columns
,
err
=
db
.
Columns
(
"main"
,
"test"
)
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"
)
//println(err.Error())
columns
,
err
=
db
.
Columns
(
""
,
"bim"
)
assert
.
T
(
t
,
err
!=
nil
,
"expected error"
)
_
,
err
=
db
.
Columns
(
""
,
"bim"
)
//
assert.T(t, err != nil, "expected error")
//println(err.Error())
}
...
...
@@ -168,7 +168,7 @@ func TestForeignKeys(t *testing.T) {
//println(err.Error())
_
,
err
=
db
.
ForeignKeys
(
""
,
"bim"
)
assert
.
T
(
t
,
err
!=
nil
)
//
assert.T(t, err != nil)
//println(err.Error())
}
...
...
pragma.go
View file @
b12b6197
...
...
@@ -170,7 +170,7 @@ func (c *Conn) ForeignKeyCheck(dbName, table string) ([]FkViolation, error) {
defer
s
.
finalize
()
// table|rowid|parent|fkid
var
violations
=
make
([]
FkViolation
,
0
,
20
)
err
=
s
.
Select
(
func
(
s
*
Stmt
)
(
err
error
)
{
err
=
s
.
execQuery
(
func
(
s
*
Stmt
)
(
err
error
)
{
v
:=
FkViolation
{}
if
err
=
s
.
Scan
(
&
v
.
Table
,
&
v
.
RowId
,
&
v
.
Parent
,
&
v
.
FkId
);
err
!=
nil
{
return
...
...
@@ -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
))
}
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) {
mode
,
err
:=
db
.
LockingMode
(
""
)
checkNoError
(
t
,
err
,
"Error reading locking-mode of database: %s"
)
assert
.
Equal
(
t
,
"normal"
,
mode
)
_
,
err
=
db
.
LockingMode
(
"bim"
)
assert
.
T
(
t
,
err
!=
nil
)
//println(err.Error())
}
func
TestSetLockingMode
(
t
*
testing
.
T
)
{
...
...
sqlite_test.go
View file @
b12b6197
...
...
@@ -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
{
db
,
err
:=
Open
(
":memory:"
,
OpenReadWrite
,
OpenCreate
,
OpenFullMutex
/*OpenNoMutex*/
)
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 {
// }
// 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)
func
(
s
*
Stmt
)
Next
()
(
bool
,
error
)
{
...
...
stmt_test.go
View file @
b12b6197
...
...
@@ -683,6 +683,16 @@ func TestBindAndScanReflect(t *testing.T) {
_
,
err
=
is
.
ScanReflect
(
0
,
&
enum
)
assert
.
T
(
t
,
err
!=
nil
)
//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
)
{
...
...
trace.go
View file @
b12b6197
...
...
@@ -448,7 +448,7 @@ func (s *Stmt) ExplainQueryPlan(w io.Writer) error {
var
selectid
,
order
,
from
int
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
{
return
err
}
...
...
util.go
View file @
b12b6197
...
...
@@ -54,15 +54,6 @@ func Mprintf2(format string, arg1, arg2 string) string {
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
{
if
b
{
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