Module: ActiveRecord::ConnectionAdapters::OracleEnhanced::SchemaStatements

Defined in:
lib/activerecord/monkey_patch/rails5_1.rb,
lib/activerecord/monkey_patch/rails5_2.rb

Instance Method Summary collapse

Instance Method Details

#change_column_null(table_name, column_name, null, default = nil) ⇒ Object



190
191
192
193
194
195
196
197
198
199
200
# File 'lib/activerecord/monkey_patch/rails5_1.rb', line 190

def change_column_null(table_name, column_name, null, default = nil) #:nodoc:
  column = column_for(table_name, column_name)

  unless null || default.nil?
    execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL")
  end

  sql_type = column.sql_type.to_s == 'DATETIME' ? 'DATE' : column.sql_type # monkey_patched

  change_column table_name, column_name, sql_type, :null => null
end

#new_column_from_field(table_name, field) ⇒ Object

Original code is the following URL.

https://github.com/rsim/oracle-enhanced/blob/v5.2.3/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb#L618-L652


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/activerecord/monkey_patch/rails5_2.rb', line 38

def new_column_from_field(table_name, field)
  limit, scale = field["limit"], field["scale"]
  if limit || scale
    field["sql_type"] += "(#{(limit || 38).to_i}" + ((scale = scale.to_i) > 0 ? ",#{scale})" : ")")
  end

  if field["sql_type_owner"]
    field["sql_type"] = field["sql_type_owner"] + "." + field["sql_type"]
  end

  is_virtual = field["virtual_column"] == "YES"

  # clean up odd default spacing from Oracle
  if field["data_default"] && !is_virtual
    field["data_default"].sub!(/^(.*?)\s*$/, '\1')

    # If a default contains a newline these cleanup regexes need to
    # match newlines.
    field["data_default"].sub!(/^'(.*)'$/m, '\1')
    field["data_default"] = nil if field["data_default"] =~ /^(null|empty_[bc]lob\(\))$/i
    # TODO: Needs better fix to fallback "N" to false
    field["data_default"] = false if (field["data_default"] == "N" && OracleEnhancedAdapter.emulate_booleans_from_strings)
  end

   = (field["sql_type"], is_virtual)

  # *** Its a monkey patch paragraph. ***
p "sql_type: #{type_metadata.sql_type}"
  if /date/i === .sql_type
    if .type == :date
      .instance_eval('@sql_type = "DATETIME"')
    end
  end

  default_value = extract_value_from_default(field["data_default"])
  default_value = nil if is_virtual
  OracleEnhanced::Column.new(oracle_downcase(field["name"]),
                             default_value,
                             ,
                             field["nullable"] == "Y",
                             table_name,
                             field["column_comment"]
                            )
end