Giter VIP home page Giter VIP logo

databasebackendengine's People

Contributors

gigimushroom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

databasebackendengine's Issues

redo bug

page->Init(pre_page_id, PAGE_SIZE, INVALID_PAGE_ID, nullptr, nullptr);
in non root page

only allow bucket when used

non used bucket should return local depth -1
getNumBuckets() returns total actual used bucket

dont make 2 dir ptr points to same bucket

something like:
only create bucket if use:
size_t bucket_id = bucketIndex(key);

assert(bucket_id < directory_.size());
if (directory_[bucket_id] == nullptr) {
directory_[bucket_id] = std::make_shared(bucket_id, depth);
++bucket_count_;
}

getlocaldepth
if (directory_[bucket_id]) {
return directory_[bucket_id]->depth;
}
return -1;

pin/unpin issue

after inserts are done. i think all pin should be 0
need to investigate.
Medium priority.

split logic

internal split should do: (getsize() + 1) / 2
leaf node, starts index 0, no invalid 1st node like internal

Questions about this repo

Hi. I find this repo and feel good. I'm not familiar with sqlite original code and wonder whether you restructure original C code to C++.

Another question, about wal policy, do you think what policy(force/no-force, steal/no-steal) sqlite use, considering it has rollback journal mode and WAL mode ?

insert 127th element cause failure

2018-09-16` 18:52:42 [src/index/b_plus_tree.cpp:132:InsertIntoLeaf] INFO  - insert into leaf causing split
before new page: 
Now visiting depth 0: 
[pageId: 12 parentId: -1]<8> 16 31 46 61 76 91 106
Now visiting depth 1: 
[pageId: 3 parentId: 12]<5> 4 7 10 13
[pageId: 11 parentId: 12]<5> 19 22 25 28
[pageId: 18 parentId: 12]<5> 34 37 40 43
[pageId: 24 parentId: 12]<5> 49 52 55 58
[pageId: 30 parentId: 12]<5> 64 67 70 73
[pageId: 36 parentId: 12]<5> 79 82 85 88
[pageId: 42 parentId: 12]<5> 94 97 100 103
[pageId: 48 parentId: 12]<6> 109 112 115 118 121
Now visiting depth 2: 
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18
19 20 21
22 23 24
25 26 27
28 29 30
31 32 33
34 35 36
37 38 39
40 41 42
43 44 45
46 47 48
49 50 51
52 53 54
55 56 57
58 59 60
61 62 63
64 65 66
67 68 69
70 71 72
73 74 75
76 77 78
79 80 81
82 83 84
85 86 87
88 89 90
91 92 93
94 95 96
97 98 99
100 101 102
103 104 105
106 107 108
109 110 111
112 113 114
115 116 117
118 119 120
121 122 123 124 125 126 127

2018-09-16 18:52:42 [src/buffer/buffer_pool_manager.cpp:182:NewPage] INFO  - page id 0 is victim page, removed!
before init: 
Now visiting depth 0: 
[pageId: 12 parentId: -1]<8> 16 31 46 61 76 91 106
Now visiting depth 1: 
[pageId: 3 parentId: 12]<5> 4 7 10 13
[pageId: 11 parentId: 12]<5> 19 22 25 28
[pageId: 18 parentId: 12]<5> 34 37 40 43
[pageId: 24 parentId: 12]<5> 49 52 55 58
[pageId: 30 parentId: 12]<5> 64 67 70 73
[pageId: 36 parentId: 12]<5> 79 82 85 88
[pageId: 42 parentId: 12]<5> 94 97 100 103
[pageId: 48 parentId: 12]<6> 109 112 115 118 121
Now visiting depth 2: 

4 5 6

After got splitted page id 50, NewPage() victim page 3, and caused the page 3 content wiped out.

Add the following

if (!found) {
        if (op == SEARCH) {
          rawPage->RLatch();
          UnLockUnPinPages(transaction, SEARCH, false);
        } else {
          rawPage->WLatch();

          if (node->IsSafe() {
			UnLockUnPinPages(transaction, Op, false);
		  }
        }
		transaction->AddIntoPageSet(rawPage);		
      }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.