8000 Added wrong but working nextImpl · arangodb/arangodb@9305dbc · GitHub
[go: up one dir, main page]

Skip to content

Commit 9305dbc

Browse files
author
maierlars
committed
Added wrong but working nextImpl
1 parent a43cf14 commit 9305dbc

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

arangod/RocksDBEngine/RocksDBKey.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ void RocksDBKey::constructZkdIndexValue(uint64_t indexId, zkd::byte_string const
8181
_buffer->clear();
8282
_buffer->reserve(keyLength);
8383
uint64ToPersistent(*_buffer, indexId);
84-
auto sv = value.as_string_view();
84+
auto sv = std::string_view{reinterpret_cast<const char*>(value.data()), value.size()};
8585
_buffer->append(sv.data(), sv.size());
8686
uint64ToPersistent(*_buffer, documentId.id());
8787
TRI_ASSERT(_buffer->size() == keyLength);

arangod/RocksDBEngine/RocksDBZkdIndex.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class RocksDBZkdIndexIterator final : public IndexIterator {
4242
_bound(RocksDBKeyBounds::ZkdIndex(index->objectId())),
4343
_min(std::move(min)),
4444
_max(std::move(max)),
45-
_dim(dim) {
45+
_dim(dim), _index(index) {
4646
_cur = _min;
4747
_upperBound = _bound.end();
4848

@@ -52,15 +52,31 @@ class RocksDBZkdIndexIterator final : public IndexIterator {
5252
TRI_ASSERT(options.prefix_same_as_start);
5353
_iter = mthds->NewIterator(options, index->columnFamily());
5454
TRI_ASSERT(_iter != nullptr);
55+
_iter->SeekToFirst();
5556
}
5657

5758

5859
char const* typeName() const override { return "rocksdb-zkd-index-iterator"; }
5960

6061
protected:
6162
bool nextImpl(const LocalDocumentIdCallback& callback, size_t limit) override {
63+
while (true) {
64+
if (!_iter->Valid()) {
65+
arangodb::rocksutils::checkIteratorStatus(_iter.get());
66+
return false;
67+
}
68+
69+
TRI_ASSERT(_index->objectId() == RocksDBKey::objectId(_iter->key()));
6270

71+
bool more = callback(
72+
RocksDBKey::documentId(_iter->key()));
73+
_iter->Next();
74+
if (!more) {
75+
break;
76+
}
77+
}
6378

79+
return _iter->Valid();
6480
}
6581

6682
/*
@@ -118,6 +134,7 @@ class RocksDBZkdIndexIterator final : public IndexIterator {
118134

119135

120136
std::unique_ptr<rocksdb::Iterator> _iter;
137+
RocksDBZkdIndex* _index;
121138
};
122139

123140
} // namespace arangodb

arangod/Zkd/ZkdHelper.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ struct floating_point {
429429
uint64_t base;
430430
};
431431

432-
std::ostream& operator<<(std::ostream& os, struct floating_point const& fp) {
432+
static inline std::ostream& operator<<(std::ostream& os, struct floating_point const& fp) {
433433
std::cout << (fp.positive ? "p" : "n") << fp.exp << "E" << fp.base;
434434
return os;
435435
}
@@ -511,11 +511,11 @@ auto zkd::from_byte_string_fixed_length<double>(byte_string_view bs) -> double {
511511
return construct_double({isPositive, exp, base});
512512
}
513513

514-
std::ostream& zkd::operator<<(std::ostream& ostream, zkd::byte_string const& string) {
514+
std::ostream& operator<<(std::ostream& ostream, zkd::byte_string const& string) {
515515
return operator<<(ostream, byte_string_view{string});
516516
}
517517

518-
std::ostream& zkd::operator<<(std::ostream& ostream, byte_string_view string) {
518+
std::ostream& operator<<(std::ostream& ostream, byte_string_view string) {
519519
ostream << "[0x ";
520520
bool first = true;
521521
for (auto const& it : string) {

arangod/Zkd/ZkdHelper.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ namespace zkd {
1212
inline static std::byte operator"" _b(unsigned long long b) {
1313
return std::byte{(unsigned char) b};
1414
}
15-
15+
/*
1616
struct byte_string : public std::basic_string<std::byte> {
1717
using std::basic_string<std::byte>::basic_string;
1818
using std::basic_string<std::byte>::operator=;
1919
20-
byte_string(std::basic_string<std::byte> str) : std::basic_string<std::byte>(std::move(str)) {}
20+
//byte_string(std::basic_string<std::byte> str) : std::basic_string<std::byte>(std::move(str)) {}
2121
2222
template<typename T>
2323
auto operator+(T&& other) -> byte_string {
@@ -27,15 +27,13 @@ struct byte_string : public std::basic_string<std::byte> {
2727
auto as_string_view() const -> std::string_view {
2828
return std::string_view(reinterpret_cast<const char *>(data()), size());
2929
}
30-
};
30+
};*/
31+
using byte_string = std::basic_string<std::byte>;
3132
using byte_string_view = std::basic_string_view<std::byte>;
3233

3334
byte_string operator"" _bs(const char* str, std::size_t len);
3435
byte_string operator"" _bss(const char* str, std::size_t len);
3536

36-
std::ostream& operator<<(std::ostream& ostream, byte_string const& string);
37-
std::ostream& operator<<(std::ostream& ostream, byte_string_view string);
38-
3937
auto interleave(std::vector<byte_string> const& vec) -> byte_string;
4038
auto transpose(byte_string_view bs, std::size_t dimensions) -> std::vector<byte_string>;
4139

@@ -141,4 +139,7 @@ struct RandomBitManipulator {
141139

142140
} // namespace zkd
143141

142+
std::ostream& operator<<(std::ostream& ostream, zkd::byte_string const& string);
143+
std::ostream& operator<<(std::ostream& ostream, zkd::byte_string_view string);
144+
144145
#endif //ZKD_TREE_LIBRARY_H

0 commit comments

Comments
 (0)
0