Index: lib/jdbc_adapter/jdbc_sqlite3.rb
===================================================================
--- lib/jdbc_adapter/jdbc_sqlite3.rb	(revision 973)
+++ lib/jdbc_adapter/jdbc_sqlite3.rb	(working copy)
@@ -112,8 +112,22 @@
       end
     end
 
-    def remove_column(table_name, column_name) #:nodoc:
-      puts "not implemented in SQLite3"
+    def remove_column(table_name, column_name) #:nodoc:      
+      cols = columns(table_name).collect {|col| col.name}
+      cols.delete(column_name)
+      cols = cols.join(', ')
+      table_backup = table_name + "_backup"
+      
+      @connection.begin
+      
+      execute "CREATE TEMPORARY TABLE #{table_backup}(#{cols})"
+      insert "INSERT INTO #{table_backup} SELECT #{cols} FROM #{table_name}"
+      execute "DROP TABLE #{table_name}"
+      execute "CREATE TABLE #{table_name}(#{cols})"
+      insert "INSERT INTO #{table_name} SELECT #{cols} FROM #{table_backup}"
+      execute "DROP TABLE #{table_backup}"
+      
+      @connection.commit
     end
 
     def change_column(table_name, column_name, type, options = {}) #:nodoc:
@@ -144,17 +158,6 @@
       Integer(select_value("SELECT SEQ FROM SQLITE_SEQUENCE WHERE NAME = '#{table}'"))
     end
 
-    # Override normal #_execute: See Rubyforge #11567
-    def _execute(sql, name = nil)
-      if ::ActiveRecord::ConnectionAdapters::JdbcConnection::select?(sql)
-        @connection.execute_query(sql)
-      elsif ::ActiveRecord::ConnectionAdapters::JdbcConnection::insert?(sql)
-        insert(sql, name)
-      else
-        @connection.execute_update(sql)
-      end
-    end
-
     def add_limit_offset!(sql, options) #:nodoc:
       if options[:limit]
         sql << " LIMIT #{options[:limit]}"
@@ -171,24 +174,15 @@
     end
 
     def indexes(table_name, name = nil)
-      result = select_rows(<<-SQL, name)
-        SELECT name, sql
-          FROM sqlite_master
-         WHERE tbl_name = '#{table_name}'
-           AND type = 'index'
-      SQL
+      result = select_rows("SELECT name, sql FROM sqlite_master WHERE tbl_name = '#{table_name}' AND type = 'index'", name)
 
-      indexes = []
-
-      result.each do |row|
+      result.collect do |row|
         name = row[0]
         index_sql = row[1]
         unique = (index_sql =~ /unique/i)
         cols = index_sql.match(/\((.*)\)/)[1].gsub(/,/,' ').split
-        indexes << ::ActiveRecord::ConnectionAdapters::IndexDefinition.new(table_name, name, unique, cols)
+        ::ActiveRecord::ConnectionAdapters::IndexDefinition.new(table_name, name, unique, cols)
       end
-
-      indexes
     end
   end
 end
Index: README.txt
===================================================================
--- README.txt	(revision 973)
+++ README.txt	(working copy)
@@ -26,8 +26,7 @@
   * rename_column
 * HSQLDB - Complete
 * H2 - Complete
-* SQLite3 - work in progress, definitely not working:
-  * remove_column
+* SQLite3 - work in progress
 
 Other databases will require testing and likely a custom configuration module. Please join the jruby-extras mailing-list[http://rubyforge.org/mail/?group_id=2014] to help us discover support for more databases.
 

