{"id":13629570,"url":"https://github.com/yixuaz/CMU-15445","last_synced_at":"2025-04-17T09:35:13.121Z","repository":{"id":41259090,"uuid":"183902908","full_name":"yixuaz/CMU-15445","owner":"yixuaz","description":"https://www.jianshu.com/nb/36265841","archived":false,"fork":false,"pushed_at":"2019-06-22T15:44:52.000Z","size":17475,"stargazers_count":289,"open_issues_count":2,"forks_count":70,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-01T22:43:53.911Z","etag":null,"topics":["bplustree","buffer-pool","database-systems","sqlite3","write-ahead-log"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yixuaz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-28T12:04:50.000Z","updated_at":"2024-07-28T01:26:16.000Z","dependencies_parsed_at":"2022-08-02T11:53:19.141Z","dependency_job_id":null,"html_url":"https://github.com/yixuaz/CMU-15445","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yixuaz%2FCMU-15445","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yixuaz%2FCMU-15445/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yixuaz%2FCMU-15445/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yixuaz%2FCMU-15445/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yixuaz","download_url":"https://codeload.github.com/yixuaz/CMU-15445/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223751283,"owners_count":17196603,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bplustree","buffer-pool","database-systems","sqlite3","write-ahead-log"],"created_at":"2024-08-01T22:01:13.821Z","updated_at":"2024-11-08T20:31:26.128Z","avatar_url":"https://github.com/yixuaz.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# CMU-15445 \nSchedule site\nhttps://15445.courses.cs.cmu.edu/fall2018/schedule.html\n\nStudy blog for cmu 15 445\nhttps://www.jianshu.com/nb/36265841\n\n`cmu_15445_2017.rar` is the project origin source file.\n \n`cmu_15445_2017_done.rar` is the project solution(including 4 projects). make sure pass all the tests including (tuple.test,vtable.test...)\n\n\n## Target\n### 1. Correctness \n  My Solution make sure cover as most test cases as possible. \n  * project 1 14 tests\n  * project 2 ~30 tests\n  * project 3 20 tests\n  * project 4 9 tests\n  And pass at least 1000 times for project 2\u00263\u00264\n  \n  * make check\n\n\u003e16/16 Test #16: virtual_table_test ...............   Passed    0.72 sec\n\n\u003e100% tests passed, 0 tests failed out of 16\n\n\u003eTotal Test time (real) =  38.21 sec\n\n\u003e[100%] Built target check\n\n### 2. Simple and Understandable\n  * Concise code is always my aim.\n\n## Blog [chinese]\n\n- [x] Lab 1: [Buffer Pool](https://15445.courses.cs.cmu.edu/fall2018/project1/)\n * [lab 1 study note](https://www.jianshu.com/p/ede089d3d8ad)\n\n- [x] Lab 2: [B+ Tree](https://15445.courses.cs.cmu.edu/fall2018/project2/)\n * [lab 2a study note](https://www.jianshu.com/p/628a39d03b79)\n * [lab 2b study note](https://www.jianshu.com/p/386e36991c64)\n * [lab 2c study note](https://www.jianshu.com/p/b83272f7684b)\n  \n- [x] Lab 3: [Concurrency Control](https://15445.courses.cs.cmu.edu/fall2017/project3/) Lack info when using 2018 project documentation, so change to 2017\n * [lab 3 study note](https://www.jianshu.com/p/087d23a17ce4)\n- [x] Lab 4: [Logging \u0026 Recovery](https://15445.courses.cs.cmu.edu/fall2017/project4/)  Lack info during using 2018 project documentation, so change to 2017\n * [lab 4 study note](https://www.jianshu.com/p/88796027112b)\n  \n  ## For self-study, take care using it if u are a student\n\u003eEvery student has to work individually on this assignment.\nStudents are allowed to discuss high-level details about the project with others.\nStudents are not allowed to copy the contents of a white-board after a group meeting with other students.\nStudents are not allowed to copy the solutions from another colleague.\n\n## Origin Readme\n### Build\n```\nmkdir build\ncd build\ncmake ..\nmake\n```\nDebug mode:\n\n```\ncmake -DCMAKE_BUILD_TYPE=Debug ..\nmake\n```\n\n### Testing\n```\ncd build\n//make sure u setup libvtable.so\nvim /etc/ld.so.conf\n//add one line for /where/you/install/lib\nsudo ldconfig\nmake check\n```\n\n### Run virtual table extension in SQLite\nStart SQLite with:\n```\ncd build\n./bin/sqlite3\n```\n\nIn SQLite, load virtual table extension with:\n\n```\n.load ./lib/libvtable.dylib\n```\nor load `libvtable.so` (Linux), `libvtable.dll` (Windows)\n\nCreate virtual table:  \n1.The first input parameter defines the virtual table schema. Please follow the format of (column_name [space] column_type) seperated by comma. We only support basic data types including INTEGER, BIGINT, SMALLINT, BOOLEAN, DECIMAL and VARCHAR.  \n2.The second parameter define the index schema. Please follow the format of (index_name [space] indexed_column_names) seperated by comma.\n```\nsqlite\u003e CREATE VIRTUAL TABLE foo USING vtable('a int, b varchar(13)','foo_pk a')\n```\n\nAfter creating virtual table:  \nType in any sql statements as you want.\n```\nsqlite\u003e INSERT INTO foo values(1,'hello');\nsqlite\u003e SELECT * FROM foo ORDER BY a;\na           b         \n----------  ----------\n1           hello   \n```\nSee [Run-Time Loadable Extensions](https://sqlite.org/loadext.html) and [CREATE VIRTUAL TABLE](https://sqlite.org/lang_createvtab.html) for further information.\n\n### Virtual table API\nhttps://sqlite.org/vtab.html\n\n### TODO\n* update: when size exceed that page, table heap returns false and delete/insert tuple (rid will change and need to delete/insert from index)\n* delete empty page from table heap when delete tuple\n* implement delete table, with empty page bitmap in disk manager (how to persistent?)\n* index: unique/dup key, variable key\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyixuaz%2FCMU-15445","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyixuaz%2FCMU-15445","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyixuaz%2FCMU-15445/lists"}