コード例 #1
0
ファイル: DatabaseController.cs プロジェクト: Banyc/MiniSQL
        // drop statement
        private void HandleStatement(DropStatement statement)
        {
            _catalogManager.CheckValidation(statement);
            SchemaRecord schema;

            switch (statement.TargetType)
            {
            case DropTarget.Table:
                schema = _catalogManager.GetTableSchemaRecord(statement.TableName);
                List <SchemaRecord> indices = _catalogManager.GetIndicesSchemaRecord(statement.TableName);
                // drop table
                _catalogManager.DropStatement(statement);
                _recordManager.DropTable(schema.RootPage);
                // drop index trees
                foreach (SchemaRecord index in indices)
                {
                    _recordManager.DropTable(index.RootPage);
                }
                break;

            case DropTarget.Index:
                schema = _catalogManager.GetIndexSchemaRecord(statement.IndexName);
                _catalogManager.DropStatement(statement);
                _recordManager.DropTable(schema.RootPage);
                break;
            }
        }