├── .gitignore ├── .vscode └── launch.json ├── Makefile ├── README.md ├── antlr-4.13.1-complete.jar ├── cmd ├── cli │ └── main.go └── server │ └── main.go ├── go.mod ├── go.sum ├── internal ├── buffer │ ├── buffer.go │ ├── buffer_manager.go │ └── buffer_manager_test.go ├── file │ ├── block_id.go │ ├── byte_buffer.go │ ├── file_manager.go │ ├── file_manager_test.go │ ├── page.go │ └── random_access_file.go ├── index │ ├── hash │ │ └── hash_index.go │ └── index.go ├── log │ ├── log_iterator.go │ ├── log_manager.go │ └── log_manager_test.go ├── metadata │ ├── catalog_test.go │ ├── index_info.go │ ├── index_manager.go │ ├── metadata_manager.go │ ├── metadata_manager_test.go │ ├── stat_info.go │ ├── stats_manager.go │ ├── table_manager.go │ ├── table_manager_test.go │ └── view_manager.go ├── parser │ ├── SimpleSql.g4 │ ├── SimpleSql.interp │ ├── SimpleSql.tokens │ ├── SimpleSqlLexer.interp │ ├── SimpleSqlLexer.tokens │ ├── ast.go │ ├── parser_test.go │ ├── simplesql_base_visitor.go │ ├── simplesql_lexer.go │ ├── simplesql_parser.go │ ├── simplesql_visitor.go │ └── visitor.go ├── plan │ ├── basic_query_planner.go │ ├── basic_update_planner.go │ ├── plan.go │ ├── planner.go │ ├── product_plan.go │ ├── project_plan.go │ ├── query_planner.go │ ├── select_plan.go │ ├── table_plan.go │ └── update_planner.go ├── query │ ├── constant.go │ ├── expression.go │ ├── predicate.go │ ├── product_scan.go │ ├── project_scan.go │ ├── rid.go │ ├── scan.go │ ├── select_scan.go │ ├── term.go │ └── update_scan.go ├── record │ ├── layout.go │ ├── layout_test.go │ ├── record_page.go │ ├── record_page_test.go │ ├── schema.go │ ├── table_scan.go │ └── table_scan_test.go ├── server │ └── simpledb.go ├── tx │ ├── concurency_test.go │ ├── concurrency │ │ ├── concurrency_manager.go │ │ └── lock_table.go │ ├── recovery │ │ ├── buffer_list.go │ │ ├── checkpoint_record.go │ │ ├── commit_record.go │ │ ├── log_record.go │ │ ├── recovery_manager.go │ │ ├── rollback_record.go │ │ ├── set_int_record.go │ │ ├── set_string_record.go │ │ ├── start_record.go │ │ └── transaction.go │ └── transaction_test.go └── utils │ ├── const.go │ └── utils.go └── screenshot.png /.gitignore: -------------------------------------------------------------------------------- 1 | **/data 2 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/.vscode/launch.json -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/README.md -------------------------------------------------------------------------------- /antlr-4.13.1-complete.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/antlr-4.13.1-complete.jar -------------------------------------------------------------------------------- /cmd/cli/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/cmd/cli/main.go -------------------------------------------------------------------------------- /cmd/server/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/cmd/server/main.go -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/go.sum -------------------------------------------------------------------------------- /internal/buffer/buffer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/buffer/buffer.go -------------------------------------------------------------------------------- /internal/buffer/buffer_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/buffer/buffer_manager.go -------------------------------------------------------------------------------- /internal/buffer/buffer_manager_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/buffer/buffer_manager_test.go -------------------------------------------------------------------------------- /internal/file/block_id.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/file/block_id.go -------------------------------------------------------------------------------- /internal/file/byte_buffer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/file/byte_buffer.go -------------------------------------------------------------------------------- /internal/file/file_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/file/file_manager.go -------------------------------------------------------------------------------- /internal/file/file_manager_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/file/file_manager_test.go -------------------------------------------------------------------------------- /internal/file/page.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/file/page.go -------------------------------------------------------------------------------- /internal/file/random_access_file.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/file/random_access_file.go -------------------------------------------------------------------------------- /internal/index/hash/hash_index.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/index/hash/hash_index.go -------------------------------------------------------------------------------- /internal/index/index.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/index/index.go -------------------------------------------------------------------------------- /internal/log/log_iterator.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/log/log_iterator.go -------------------------------------------------------------------------------- /internal/log/log_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/log/log_manager.go -------------------------------------------------------------------------------- /internal/log/log_manager_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/log/log_manager_test.go -------------------------------------------------------------------------------- /internal/metadata/catalog_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/catalog_test.go -------------------------------------------------------------------------------- /internal/metadata/index_info.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/index_info.go -------------------------------------------------------------------------------- /internal/metadata/index_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/index_manager.go -------------------------------------------------------------------------------- /internal/metadata/metadata_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/metadata_manager.go -------------------------------------------------------------------------------- /internal/metadata/metadata_manager_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/metadata_manager_test.go -------------------------------------------------------------------------------- /internal/metadata/stat_info.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/stat_info.go -------------------------------------------------------------------------------- /internal/metadata/stats_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/stats_manager.go -------------------------------------------------------------------------------- /internal/metadata/table_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/table_manager.go -------------------------------------------------------------------------------- /internal/metadata/table_manager_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/table_manager_test.go -------------------------------------------------------------------------------- /internal/metadata/view_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/metadata/view_manager.go -------------------------------------------------------------------------------- /internal/parser/SimpleSql.g4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/SimpleSql.g4 -------------------------------------------------------------------------------- /internal/parser/SimpleSql.interp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/SimpleSql.interp -------------------------------------------------------------------------------- /internal/parser/SimpleSql.tokens: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/SimpleSql.tokens -------------------------------------------------------------------------------- /internal/parser/SimpleSqlLexer.interp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/SimpleSqlLexer.interp -------------------------------------------------------------------------------- /internal/parser/SimpleSqlLexer.tokens: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/SimpleSqlLexer.tokens -------------------------------------------------------------------------------- /internal/parser/ast.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/ast.go -------------------------------------------------------------------------------- /internal/parser/parser_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/parser_test.go -------------------------------------------------------------------------------- /internal/parser/simplesql_base_visitor.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/simplesql_base_visitor.go -------------------------------------------------------------------------------- /internal/parser/simplesql_lexer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/simplesql_lexer.go -------------------------------------------------------------------------------- /internal/parser/simplesql_parser.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/simplesql_parser.go -------------------------------------------------------------------------------- /internal/parser/simplesql_visitor.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/simplesql_visitor.go -------------------------------------------------------------------------------- /internal/parser/visitor.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/parser/visitor.go -------------------------------------------------------------------------------- /internal/plan/basic_query_planner.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/basic_query_planner.go -------------------------------------------------------------------------------- /internal/plan/basic_update_planner.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/basic_update_planner.go -------------------------------------------------------------------------------- /internal/plan/plan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/plan.go -------------------------------------------------------------------------------- /internal/plan/planner.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/planner.go -------------------------------------------------------------------------------- /internal/plan/product_plan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/product_plan.go -------------------------------------------------------------------------------- /internal/plan/project_plan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/project_plan.go -------------------------------------------------------------------------------- /internal/plan/query_planner.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/query_planner.go -------------------------------------------------------------------------------- /internal/plan/select_plan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/select_plan.go -------------------------------------------------------------------------------- /internal/plan/table_plan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/table_plan.go -------------------------------------------------------------------------------- /internal/plan/update_planner.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/plan/update_planner.go -------------------------------------------------------------------------------- /internal/query/constant.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/constant.go -------------------------------------------------------------------------------- /internal/query/expression.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/expression.go -------------------------------------------------------------------------------- /internal/query/predicate.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/predicate.go -------------------------------------------------------------------------------- /internal/query/product_scan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/product_scan.go -------------------------------------------------------------------------------- /internal/query/project_scan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/project_scan.go -------------------------------------------------------------------------------- /internal/query/rid.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/rid.go -------------------------------------------------------------------------------- /internal/query/scan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/scan.go -------------------------------------------------------------------------------- /internal/query/select_scan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/select_scan.go -------------------------------------------------------------------------------- /internal/query/term.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/term.go -------------------------------------------------------------------------------- /internal/query/update_scan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/query/update_scan.go -------------------------------------------------------------------------------- /internal/record/layout.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/record/layout.go -------------------------------------------------------------------------------- /internal/record/layout_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/record/layout_test.go -------------------------------------------------------------------------------- /internal/record/record_page.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/record/record_page.go -------------------------------------------------------------------------------- /internal/record/record_page_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/record/record_page_test.go -------------------------------------------------------------------------------- /internal/record/schema.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/record/schema.go -------------------------------------------------------------------------------- /internal/record/table_scan.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/record/table_scan.go -------------------------------------------------------------------------------- /internal/record/table_scan_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/record/table_scan_test.go -------------------------------------------------------------------------------- /internal/server/simpledb.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/server/simpledb.go -------------------------------------------------------------------------------- /internal/tx/concurency_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/concurency_test.go -------------------------------------------------------------------------------- /internal/tx/concurrency/concurrency_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/concurrency/concurrency_manager.go -------------------------------------------------------------------------------- /internal/tx/concurrency/lock_table.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/concurrency/lock_table.go -------------------------------------------------------------------------------- /internal/tx/recovery/buffer_list.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/buffer_list.go -------------------------------------------------------------------------------- /internal/tx/recovery/checkpoint_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/checkpoint_record.go -------------------------------------------------------------------------------- /internal/tx/recovery/commit_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/commit_record.go -------------------------------------------------------------------------------- /internal/tx/recovery/log_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/log_record.go -------------------------------------------------------------------------------- /internal/tx/recovery/recovery_manager.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/recovery_manager.go -------------------------------------------------------------------------------- /internal/tx/recovery/rollback_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/rollback_record.go -------------------------------------------------------------------------------- /internal/tx/recovery/set_int_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/set_int_record.go -------------------------------------------------------------------------------- /internal/tx/recovery/set_string_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/set_string_record.go -------------------------------------------------------------------------------- /internal/tx/recovery/start_record.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/start_record.go -------------------------------------------------------------------------------- /internal/tx/recovery/transaction.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/recovery/transaction.go -------------------------------------------------------------------------------- /internal/tx/transaction_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/tx/transaction_test.go -------------------------------------------------------------------------------- /internal/utils/const.go: -------------------------------------------------------------------------------- 1 | package utils 2 | -------------------------------------------------------------------------------- /internal/utils/utils.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/internal/utils/utils.go -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanxg852000/simpledb-go/HEAD/screenshot.png --------------------------------------------------------------------------------