# File lib/kirbybase.rb, line 2610
    def add_index(*col_names)
        raise "Do not execute this method in client/server mode!" if \
         @db.client?

        col_names.each do |c|
            raise "Invalid column name: #{c}" unless \
             @field_names.include?(c)
            
            raise "recno column cannot be indexed!" if c == :recno

            raise "Column already indexed: #{c}" unless \
             @field_indexes[@field_names.index(c)].nil?
        end
        
        last_index_no_used = 0
        @field_indexes.each do |i|
            next if i.nil?
            index_no = i[-1..-1].to_i
            last_index_no_used = index_no if index_no > last_index_no_used
        end
        
        @db.engine.add_index(self, col_names, last_index_no_used+1)

        # Need to reinitialize the table instance and associated indexes.

        @db.engine.remove_recno_index(@name)
        @db.engine.remove_indexes(@name)

        update_header_vars
        create_indexes
        create_table_class unless @db.server?
    end