Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

checking in the abstractions for valid type checking:

  • Loading branch information...
commit c321b309a9a90bbfa0912832c11b3fef52e71840 1 parent bbcebb6
@ranjaykrishna ranjaykrishna authored
View
4 activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -314,6 +314,10 @@ def translate_exception(exception, message)
# override in derived class
ActiveRecord::StatementInvalid.new(message)
end
+
+ def valid_types?(type)
+ true
+ end
end
end
end
View
3  activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -750,6 +750,9 @@ def configure_connection
execute("SET #{encoding} #{variable_assignments}", :skip_logging)
end
+ def valid_type?(type)
+ !native_database_types[type].nil?
+ end
end
end
end
View
4 activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -820,6 +820,10 @@ def extract_table_ref_from_insert_sql(sql)
def table_definition
TableDefinition.new(self)
end
+
+ def valid_type?(type)
+ !native_database_types[type].nil?
+ end
end
end
end
View
4 activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
@@ -599,6 +599,10 @@ def translate_exception(exception, message)
end
end
+ def valid_type?(type)
+ true
+ end
+
end
end
end
View
2  activerecord/lib/active_record/schema_dumper.rb
@@ -105,7 +105,7 @@ def table(table, stream)
# then dump all non-primary key columns
column_specs = columns.map do |column|
- raise StandardError, "Unknown type '#{column.sql_type}' for column '#{column.name}'" if @types[column.type].nil?
+ raise StandardError, "Unknown type '#{column.sql_type}' for column '#{column.name}'" unless @connection.valid_type?(column.type)
next if column.name == pk
@connection.column_spec(column, @types)
end.compact
View
9 activerecord/test/cases/adapters/mysql/mysql_adapter_test.rb
@@ -16,6 +16,15 @@ def setup
eosql
end
+ def test_valid_column
+ column = @conn.column('ex').find { |col| col.name == 'id' }
+ assert @conn.valid_type?(column.type)
+ end
+
+ def test_invalid_column
+ assert !@conn.valid_type?(:foobar)
+ end
+
def test_client_encoding
assert_equal Encoding::UTF_8, @conn.client_encoding
end
View
9 activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb
@@ -10,6 +10,15 @@ def setup
@connection.exec_query('create table ex(id serial primary key, number integer, data character varying(255))')
end
+ def test_valid_column
+ column = @connection.column('ex').find { |col| col.name == 'id' }
+ assert @connection.valid_type?(column.type)
+ end
+
+ def test_invalid_column
+ assert !@connection.valid_type?(:foobar)
+ end
+
def test_primary_key
assert_equal 'id', @connection.primary_key('ex')
end
View
9 activerecord/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb
@@ -25,6 +25,15 @@ def setup
@conn.intercepted = true
end
+ def test_valid_column
+ column = @conn.column('items').find { |col| col.name == 'id' }
+ assert @conn.valid_type?(column.type)
+ end
+
+ def test_invalid_column
+ assert @conn.valid_type?(:foobar)
+ end
+
def teardown
@conn.intercepted = false
@conn.logged = []
Please sign in to comment.
Something went wrong with that request. Please try again.