Title: [681] trunk/activerecord-jdbc/lib: Better handling of indexes for Oracle
Revision
681
Author
olabini
Date
2007-08-04 00:36:15 -0400 (Sat, 04 Aug 2007)

Log Message

Better handling of indexes for Oracle

Modified Paths


Diff

Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb (680 => 681)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb	2007-08-01 22:57:02 UTC (rev 680)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb	2007-08-04 04:36:15 UTC (rev 681)
@@ -268,7 +268,7 @@
       # should filter the return from this method instead.
       #
       # TODO: fix to use reconnect correctly
-      def indexes(table_name, name = nil)
+      def indexes(table_name, name = nil, schema_name = nil)
         metadata = @connection.getMetaData
         unless String === table_name
           table_name = table_name.to_s 
@@ -277,12 +277,14 @@
         end
         table_name.upcase! if metadata.storesUpperCaseIdentifiers
         table_name.downcase! if metadata.storesLowerCaseIdentifiers
-        resultset = metadata.getIndexInfo(nil, nil, table_name, false, false)
+        resultset = metadata.getIndexInfo(nil, schema_name, table_name, false, false)
         primary_keys = primary_keys(table_name)
         indexes = []
         current_index = nil
         while resultset.next
-          index_name = resultset.get_string(Jdbc::IndexMetaData::INDEX_NAME).downcase
+          index_name = resultset.get_string(Jdbc::IndexMetaData::INDEX_NAME)
+          next unless index_name
+          index_name.downcase!
           column_name = resultset.get_string(Jdbc::IndexMetaData::COLUMN_NAME).downcase
           
           next if primary_keys.include? column_name

Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_oracle.rb (680 => 681)


--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_oracle.rb	2007-08-01 22:57:02 UTC (rev 680)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_oracle.rb	2007-08-04 04:36:15 UTC (rev 681)
@@ -102,6 +102,10 @@
       execute "DROP SEQUENCE #{name}_seq" rescue nil
     end
 
+    def recreate_database(name)
+      tables.each{ |table| drop_table(table) }
+    end
+    
     def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) #:nodoc:
       if pk.nil? # Who called us? What does the sql look like? No idea!
         execute sql, name
@@ -116,6 +120,10 @@
       id_value
     end
 
+    def indexes(table, name = nil)
+      @connection.indexesr(table, name, @connection.connection.meta_data.user_name)
+    end
+    
     def _execute(sql, name = nil)
         case sql.strip
         when /^(select|show)/i:
@@ -182,7 +190,11 @@
               from user_tab_columns
               where table_name = '#{table.to_a.first.last}'
               order by column_id
-            }).map do |row|              
+            }).map do |row|
+          row = row.inject({}) do |h,args| 
+            h[args[0].downcase] = args[1]
+            h 
+          end
           col = "#{row['column_name'].downcase} #{row['data_type'].downcase}"      
           if row['data_type'] =='NUMBER' and !row['data_precision'].nil?
             col << "(#{row['data_precision'].to_i}"
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to