Ticket #1751: named_sequences_for_oracle.diff
| File named_sequences_for_oracle.diff, 6.6 kB (added by crutan@gmail.com, 3 years ago) |
|---|
-
test/fixtures/db_definitions/oci.sql
old new 216 216 id integer not null primary key, 217 217 fk_id integer not null references fk_test_has_fk initially deferred disable 218 218 ); 219 220 create table widgets ( 221 widget_id integer not null primary_key, 222 widget_name varchar(255) no null, 223 ); 224 create sequence widget_sq minvalue 10; -
lib/active_record/connection_adapters/sqlite_adapter.rb
old new 119 119 @connection.changes 120 120 end 121 121 122 def insert(sql, name = nil, pk = nil, id_value = nil )122 def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) 123 123 execute(sql, name = nil) 124 124 id_value || @connection.last_insert_row_id 125 125 end -
lib/active_record/connection_adapters/abstract_adapter.rb
old new 279 279 def columns(table_name, name = nil) end 280 280 281 281 # Returns the last auto-generated ID from the affected table. 282 def insert(sql, name = nil, pk = nil, id_value = nil ) end282 def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) end 283 283 284 284 # Executes the update statement and returns the number of rows affected. 285 285 def update(sql, name = nil) end -
lib/active_record/connection_adapters/postgresql_adapter.rb
old new 95 95 end 96 96 end 97 97 98 def insert(sql, name = nil, pk = nil, id_value = nil )98 def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) 99 99 execute(sql, name) 100 100 table = sql.split(" ", 4)[2] 101 101 return id_value || last_insert_id(table, pk) -
lib/active_record/connection_adapters/mysql_adapter.rb
old new 109 109 columns 110 110 end 111 111 112 def insert(sql, name = nil, pk = nil, id_value = nil )112 def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) 113 113 execute(sql, name = nil) 114 114 id_value || @connection.insert_id 115 115 end -
lib/active_record/connection_adapters/sqlserver_adapter.rb
old new 204 204 columns 205 205 end 206 206 207 def insert(sql, name = nil, pk = nil, id_value = nil )207 def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) 208 208 begin 209 209 table_name = get_table_name(sql) 210 210 col = get_identity_column(table_name) -
lib/active_record/connection_adapters/db2_adapter.rb
old new 44 44 select(sql, name).first 45 45 end 46 46 47 def insert(sql, name = nil, pk = nil, id_value = nil )47 def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) 48 48 execute(sql, name = nil) 49 49 id_value || last_insert_id 50 50 end -
lib/active_record/connection_adapters/oci_adapter.rb
old new 163 163 cols 164 164 end 165 165 166 def insert(sql, name = nil, pk = nil, id_value = nil )166 def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) 167 167 if pk.nil? # Who called us? What does the sql look like? No idea! 168 168 execute sql, name 169 169 elsif id_value # Pre-assigned id 170 170 log(sql, name) { @connection.exec sql } 171 elsif sequence_name 172 id_value = select_one("select #{sequence_name}.nextval id from dual")['id'] 173 log(sql,name) { @connection.exec sql, id_value } 171 174 else # Assume the sql contains a bind-variable for the id 172 175 id_value = select_one("select rails_sequence.nextval id from dual")['id'] 173 176 log(sql, name) { @connection.exec sql, id_value } -
lib/active_record/base.rb
old new 548 548 "#{table_name_prefix}#{undecorated_table_name(class_name_of_active_record_descendant(self))}#{table_name_suffix}" 549 549 end 550 550 551 # sequence name placeholder 552 def sequence_name 553 nil 554 end 555 551 556 # Defines the primary key field -- can be overridden in subclasses. Overwriting will negate any effect of the 552 557 # primary_key_prefix_type setting, though. 553 558 def primary_key … … 609 614 end 610 615 alias :inheritance_column= :set_inheritance_column 611 616 617 # Sets the name of the sequence to be used for this class 618 # no effect if not set, will treat as an auto-increment table 619 # or use 'rails_sequence' (for oci) 620 621 def set_sequence_name( value=nil, &block ) 622 define_attr_method :sequence_name, value, &block 623 end 624 alias :sequence_name= :set_sequence_name 625 612 626 # Turns the +table_name+ back into a class name following the reverse rules of +table_name+. 613 627 def class_name(table_name = table_name) # :nodoc: 614 628 # remove any prefix and/or suffix from the table name … … 1157 1171 "(#{quoted_column_names.join(', ')}) " + 1158 1172 "VALUES(#{attributes_with_quotes.values.join(', ')})", 1159 1173 "#{self.class.name} Create", 1160 self.class.primary_key, self.id 1174 self.class.primary_key, self.id, self.class.sequence_name 1161 1175 ) 1162 1176 1163 1177 @new_record = false