|  |  | @ -411,16 +411,18 @@ func (e *SQLEngine) formatOptimization(opt string) string { | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | // executeDDLStatement handles CREATE, ALTER, DROP operations
 | 
			
		
	
		
			
				
					|  |  |  | // Assumption: These operations modify the underlying MQ topic structure
 | 
			
		
	
		
			
				
					|  |  |  | // executeDDLStatement handles CREATE operations only
 | 
			
		
	
		
			
				
					|  |  |  | // Note: ALTER TABLE and DROP TABLE are not supported to protect topic data
 | 
			
		
	
		
			
				
					|  |  |  | func (e *SQLEngine) executeDDLStatement(ctx context.Context, stmt *sqlparser.DDL) (*QueryResult, error) { | 
			
		
	
		
			
				
					|  |  |  | 	switch stmt.Action { | 
			
		
	
		
			
				
					|  |  |  | 	case sqlparser.CreateStr: | 
			
		
	
		
			
				
					|  |  |  | 		return e.createTable(ctx, stmt) | 
			
		
	
		
			
				
					|  |  |  | 	case sqlparser.AlterStr: | 
			
		
	
		
			
				
					|  |  |  | 		return e.alterTable(ctx, stmt) | 
			
		
	
		
			
				
					|  |  |  | 		err := fmt.Errorf("ALTER TABLE is not supported") | 
			
		
	
		
			
				
					|  |  |  | 		return &QueryResult{Error: err}, err | 
			
		
	
		
			
				
					|  |  |  | 	case sqlparser.DropStr: | 
			
		
	
		
			
				
					|  |  |  | 		return e.dropTable(ctx, stmt) | 
			
		
	
		
			
				
					|  |  |  | 		err := fmt.Errorf("DROP TABLE is not supported") | 
			
		
	
		
			
				
					|  |  |  | 		return &QueryResult{Error: err}, err | 
			
		
	
		
			
				
					|  |  |  | 	default: | 
			
		
	
		
			
				
					|  |  |  | 		err := fmt.Errorf("unsupported DDL action: %s", stmt.Action) | 
			
		
	
		
			
				
					|  |  |  | 		return &QueryResult{Error: err}, err | 
			
		
	
	
		
			
				
					|  |  | @ -1399,50 +1401,6 @@ func (e *SQLEngine) createTable(ctx context.Context, stmt *sqlparser.DDL) (*Quer | 
			
		
	
		
			
				
					|  |  |  | 	return result, nil | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | func (e *SQLEngine) alterTable(ctx context.Context, stmt *sqlparser.DDL) (*QueryResult, error) { | 
			
		
	
		
			
				
					|  |  |  | 	// TODO: Implement table alteration
 | 
			
		
	
		
			
				
					|  |  |  | 	// This will modify the MQ topic schema with versioning
 | 
			
		
	
		
			
				
					|  |  |  | 	err := fmt.Errorf("ALTER TABLE not yet implemented") | 
			
		
	
		
			
				
					|  |  |  | 	return &QueryResult{Error: err}, err | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | func (e *SQLEngine) dropTable(ctx context.Context, stmt *sqlparser.DDL) (*QueryResult, error) { | 
			
		
	
		
			
				
					|  |  |  | 	// Parse DROP TABLE statement
 | 
			
		
	
		
			
				
					|  |  |  | 	// Assumption: Table name is in stmt.NewName for DROP operations
 | 
			
		
	
		
			
				
					|  |  |  | 	tableName := stmt.NewName.Name.String() | 
			
		
	
		
			
				
					|  |  |  | 	database := "" | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	// Check if database is specified in table name
 | 
			
		
	
		
			
				
					|  |  |  | 	if stmt.NewName.Qualifier.String() != "" { | 
			
		
	
		
			
				
					|  |  |  | 		database = stmt.NewName.Qualifier.String() | 
			
		
	
		
			
				
					|  |  |  | 	} else { | 
			
		
	
		
			
				
					|  |  |  | 		// Use current database context or default
 | 
			
		
	
		
			
				
					|  |  |  | 		database = e.catalog.GetCurrentDatabase() | 
			
		
	
		
			
				
					|  |  |  | 		if database == "" { | 
			
		
	
		
			
				
					|  |  |  | 			database = "default" | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	// Delete the topic via broker
 | 
			
		
	
		
			
				
					|  |  |  | 	err := e.catalog.brokerClient.DeleteTopic(ctx, database, tableName) | 
			
		
	
		
			
				
					|  |  |  | 	if err != nil { | 
			
		
	
		
			
				
					|  |  |  | 		return &QueryResult{Error: err}, err | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	// Remove from catalog cache
 | 
			
		
	
		
			
				
					|  |  |  | 	// TODO: Implement catalog cache removal
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	// Return success result
 | 
			
		
	
		
			
				
					|  |  |  | 	result := &QueryResult{ | 
			
		
	
		
			
				
					|  |  |  | 		Columns: []string{"Result"}, | 
			
		
	
		
			
				
					|  |  |  | 		Rows: [][]sqltypes.Value{ | 
			
		
	
		
			
				
					|  |  |  | 			{sqltypes.NewVarChar(fmt.Sprintf("Table '%s.%s' dropped successfully", database, tableName))}, | 
			
		
	
		
			
				
					|  |  |  | 		}, | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	return result, nil | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | // ExecutionPlanBuilder handles building execution plans for queries
 | 
			
		
	
		
			
				
					|  |  |  | type ExecutionPlanBuilder struct { | 
			
		
	
		
			
				
					|  |  |  | 	engine *SQLEngine | 
			
		
	
	
		
			
				
					|  |  | 
 |