aboutsummaryrefslogtreecommitdiff
path: root/transaction.go
diff options
context:
space:
mode:
Diffstat (limited to 'transaction.go')
-rw-r--r--transaction.go28
1 files changed, 14 insertions, 14 deletions
diff --git a/transaction.go b/transaction.go
index 07665ee..171508f 100644
--- a/transaction.go
+++ b/transaction.go
@@ -47,45 +47,45 @@ func (t *Transaction) DB() *DB {
}
// Bucket retrieves a bucket by name.
-func (t *Transaction) Bucket(name string) (*Bucket, error) {
+func (t *Transaction) Bucket(name string) *Bucket {
// Return cached reference if it's already been looked up.
if b := t.buckets[name]; b != nil {
- return b, nil
+ return b
}
// Retrieve bucket data from the system bucket.
- value := t.get(&t.sys, []byte(name))
+ value := t.sys.cursor().Get([]byte(name))
if value == nil {
return nil
}
// Create a bucket that overlays the data.
b := &Bucket{
- bucket: (*bucket)(unsafe.Pointer(&data[0])),
+ bucket: (*bucket)(unsafe.Pointer(&value[0])),
name: name,
transaction: t,
}
t.buckets[name] = b
- return b, nil
+ return b
}
// Cursor creates a cursor associated with a given bucket.
-func (t *Transaction) Cursor(name string) (*Cursor, error) {
- b, err := t.Bucket(name)
- if err != nil {
- return nil, err
+func (t *Transaction) Cursor(name string) *Cursor {
+ b := t.Bucket(name)
+ if b == nil {
+ return nil
}
return b.Cursor()
}
// Get retrieves the value for a key in a named bucket.
-func (t *Transaction) Get(name string, key []byte) ([]byte, error) {
- b, err := t.Bucket(name)
- if err != nil {
- return nil, err
+func (t *Transaction) Get(name string, key []byte) []byte {
+ c := t.Cursor(name)
+ if c == nil {
+ return nil
}
- return b.Get(key)
+ return c.Get(key)
}
// Stat returns information about a bucket's internal structure.