// create statement private void HandleStatement(CreateStatement statement) { _catalogManager.CheckValidation(statement); switch (statement.CreateType) { case CreateType.Table: int newTableRoot = _recordManager.CreateTable(); _catalogManager.CreateStatement(statement, newTableRoot); break; case CreateType.Index: SchemaRecord tableSchema = _catalogManager.GetTableSchemaRecord(statement.TableName); int newIndexRoot = _recordManager.CreateIndex(tableSchema.RootPage, statement.AttributeName, tableSchema.SQL.AttributeDeclarations); _catalogManager.CreateStatement(statement, newIndexRoot); break; } }
//check whether we can successfully return the schema record of a table or an index static bool CheckGetSchemaRecord() { SchemaRecord target_table = icatalog.GetTableSchemaRecord("Student"); Console.WriteLine("Schema of Table"); Console.WriteLine(target_table.Name); Console.WriteLine(target_table.RootPage); Console.WriteLine(target_table.Type); Console.WriteLine(target_table.SQL.PrimaryKey); Console.WriteLine(target_table.SQL.TableName); Console.WriteLine(target_table.SQL.Type); SchemaRecord target_index = icatalog.GetIndexSchemaRecord("index_for_student_id"); Console.WriteLine("Schema of Index"); Console.WriteLine(target_index.Name); Console.WriteLine(target_index.RootPage); Console.WriteLine(target_index.Type); Console.WriteLine(target_index.SQL.IndexName); Console.WriteLine(target_index.SQL.IsUnique); Console.WriteLine(target_index.SQL.Type); List <SchemaRecord> target_indices = icatalog.GetIndicesSchemaRecord("Student"); for (int i = 0; i < target_indices.Count; i++) { Console.WriteLine("Schema of Indices"); Console.WriteLine(target_indices[i].Name); Console.WriteLine(target_indices[i].RootPage); Console.WriteLine(target_indices[i].Type); Console.WriteLine(target_indices[i].SQL.IndexName); Console.WriteLine(target_indices[i].SQL.IsUnique); Console.WriteLine(target_indices[i].SQL.Type); } return(true); }