Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-ds-leveldb
Commits
882341c7
Commit
882341c7
authored
Jan 09, 2015
by
Juan Batiz-Benet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
query: send back errors when channels somehow
this is not a good inteface. should fix it
parent
a706e049
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
27 deletions
+36
-27
datastore.go
datastore.go
+36
-27
No files found.
datastore.go
View file @
882341c7
...
...
@@ -79,6 +79,15 @@ func (d *datastore) Query(q dsq.Query) (*dsq.Results, error) {
}
i
:=
d
.
DB
.
NewIterator
(
rnge
,
nil
)
// buffer this channel so that we dont totally block leveldb if client
// is not reading from chan.
ch
:=
make
(
chan
dsq
.
Entry
,
1000
)
qr
:=
dsq
.
ResultsWithEntriesChan
(
q
,
ch
)
// qr := dsq.ResultsWithEntries(q, es)
go
func
()
{
defer
close
(
ch
)
// offset
if
q
.
Offset
>
0
{
for
j
:=
0
;
j
<
q
.
Offset
;
j
++
{
...
...
@@ -86,11 +95,11 @@ func (d *datastore) Query(q dsq.Query) (*dsq.Results, error) {
}
}
var
es
[]
dsq
.
Entry
sent
:=
0
for
i
.
Next
()
{
// limit
if
q
.
Limit
>
0
&&
l
en
(
es
)
>=
q
.
Limit
{
if
q
.
Limit
>
0
&&
s
en
t
>=
q
.
Limit
{
break
}
...
...
@@ -103,20 +112,20 @@ func (d *datastore) Query(q dsq.Query) (*dsq.Results, error) {
e
.
Value
=
buf
}
es
=
append
(
es
,
e
)
ch
<-
e
sent
++
}
i
.
Release
()
if
err
:=
i
.
Error
();
err
!=
nil
{
return
nil
,
err
qr
.
Err
()
<-
err
}
}()
// Now, apply remaining pieces.
q2
:=
q
q2
.
Offset
=
0
// already applied
q2
.
Limit
=
0
// already applied
// TODO: make this async with:
// qr := dsq.ResultsWithEntriesChan(q, ch)
qr
:=
dsq
.
ResultsWithEntries
(
q
,
es
)
qr
=
q2
.
ApplyTo
(
qr
)
qr
.
Query
=
q
// set it back
return
qr
,
nil
...
...
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