From b2a61c66e49aef16e00077a4b6dc39ad6258d1ba Mon Sep 17 00:00:00 2001 From: TakshakRamteke Date: Tue, 21 Jul 2026 23:22:15 +0530 Subject: [PATCH] feat: added a struct for table --- internals/repl/repl.go | 3 ++- internals/vm/vm.go | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/internals/repl/repl.go b/internals/repl/repl.go index b6cccb7..49ab463 100644 --- a/internals/repl/repl.go +++ b/internals/repl/repl.go @@ -16,6 +16,7 @@ func Run() { inputBuffer := NewInputBuffer() statement := NewStatement() + table := NewTable() for { PrintConsole() inputBuffer.ReadConsole() @@ -37,7 +38,7 @@ func Run() { continue } - statement.ExecuteStatement() + statement.ExecuteStatement(table) fmt.Println("Executed") } diff --git a/internals/vm/vm.go b/internals/vm/vm.go index e7ff626..354baf4 100644 --- a/internals/vm/vm.go +++ b/internals/vm/vm.go @@ -41,10 +41,28 @@ type Statement struct { row row } +const ( + _pageSize = 4096 + maxPages = 100 +) + +type Table struct { + numOfRows uint + pages [maxPages]any +} + func NewStatement() *Statement { return &Statement{0, row{0, "", ""}} } +func NewTable() *Table { + newTable := Table{numOfRows: 0} + for i := range maxPages { + newTable.pages[i] = nil + } + return &newTable +} + func DoMetaCommands(inputBuffer *InputBuffer) MetaCommandResults { metacommand := MetaCommandUnrecognised if inputBuffer.Buffer == ".exit" { @@ -76,7 +94,7 @@ func (statement *Statement) PrepareStatements(inputBuffer *InputBuffer) PrepareR return PrepareUnrecognised } -func (statement *Statement) ExecuteStatement() { +func (statement *Statement) ExecuteStatement(table *Table) { switch statement.stype { case StatementInsert: fmt.Println("This is where the logic of insert statement should go")