diff --git a/adapter/lib/active_record/connection_adapters/monetdb_adapter.rb b/adapter/lib/active_record/connection_adapters/monetdb_adapter.rb index c893f3c76b04b4cdc42c4f689b52b581712d3dd4..bcdd63d8f8e30623e831a2752e955fa40ca7fe8f 100644 --- a/adapter/lib/active_record/connection_adapters/monetdb_adapter.rb +++ b/adapter/lib/active_record/connection_adapters/monetdb_adapter.rb @@ -449,6 +449,11 @@ module ActiveRecord def last_inserted_id(result) result.last_insert_id end + + def delete(arel, name = nil, binds = []) + res = super(arel, name, binds) + res.affected_rows + end # Begins the transaction. def begin_db_transaction @@ -501,57 +506,57 @@ module ActiveRecord #=======END=OF=DATABASE=STATEMENTS=========# - protected - # restructure result returned by execute - def process_hdl(hdl) - result = [] - if (num_rows = hdl.num_rows) > 0 - fields = hdl.name_fields + # restructure result returned by execute + def process_hdl(hdl) + result = [] - num_rows.times do - result << {} - end + if (num_rows = hdl.num_rows) > 0 + fields = hdl.name_fields - fields.each do |f| - cols = hdl.fetch_column_name(f) - cols.each_with_index do |val, i| - val = nil if val == 'NULL' - result[i][f] = val - end - end + num_rows.times do + result << {} end - result + fields.each do |f| + cols = hdl.fetch_column_name(f) + cols.each_with_index do |val, i| + val = nil if val == 'NULL' + result[i][f] = val + end + end end - # Returns an array of record hashes with the column names as keys and - # column values as values. - def select(sql, name = nil, binds = []) - hdl = execute(sql,name) + result + end - process_hdl(hdl) - end - - # Executes the update statement and returns the number of rows affected. - def update_sql(sql, name = nil) - hdl = execute(sql,name) - # affected_rows = hdl.affected_rows - return false - end - - # Returns the last auto-generated ID from the affected table. - def insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) - # Ensures that the auto-generated id value will not violate the - # primary key constraint. Read the comments of make_sure_pk_works - # and documentation for further information. - # comment out for production code(?) - # table_name = extract_table_name_from_insertion_query(sql) - # make_sure_pk_works(table_name,name) - hdl = execute(sql, name) - # last_auto_generated_id = hdl.get_last_auto_generated_id - end - + # Returns an array of record hashes with the column names as keys and + # column values as values. + def select(sql, name = nil, binds = []) + hdl = execute(sql,name) + + process_hdl(hdl) + end + + # Executes the update statement and returns the number of rows affected. + def update_sql(sql, name = nil) + hdl = execute(sql,name) + hdl.affected_rows + end + + # Returns the last auto-generated ID from the affected table. + def insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) + # Ensures that the auto-generated id value will not violate the + # primary key constraint. Read the comments of make_sure_pk_works + # and documentation for further information. + # comment out for production code(?) + # table_name = extract_table_name_from_insertion_query(sql) + # make_sure_pk_works(table_name,name) + hdl = execute(sql, name) + hdl.last_insert_id + end + + protected # Some tests insert some tuples with the id values set. In other words, the sequence # is not used to generate a value for the primary key column named id. When a new tuple # it to be inserted, where the id value is not set explicitly, a primary key violation will