Skip to content
Permalink
Browse files

Don't append limit to primary key column definition. Freeze some cons…

…tants.
  • Loading branch information...
jeremy committed Jun 9, 2008
1 parent 057768c commit def594b92d1e68db68a27d53dec7ae4e6246f5a5
@@ -356,7 +356,7 @@ def assume_migrated_upto_version(version)

def type_to_sql(type, limit = nil, precision = nil, scale = nil) #:nodoc:
if native = native_database_types[type]
column_type_sql = native.is_a?(Hash) ? native[:name] : native
column_type_sql = (native.is_a?(Hash) ? native[:name] : native).dup

if type == :decimal # ignore limit, use precision and scale
scale ||= native[:scale]
@@ -371,7 +371,7 @@ def type_to_sql(type, limit = nil, precision = nil, scale = nil) #:nodoc:
raise ArgumentError, "Error adding decimal column: precision cannot be empty if scale if specified"
end

elsif limit ||= native.is_a?(Hash) && native[:limit]
elsif (type != :primary_key) && (limit ||= native.is_a?(Hash) && native[:limit])
column_type_sql << "(#{limit})"
end

@@ -147,6 +147,8 @@ class MysqlAdapter < AbstractAdapter
@@emulate_booleans = true
cattr_accessor :emulate_booleans

ADAPTER_NAME = 'MySQL'.freeze

LOST_CONNECTION_ERROR_MESSAGES = [
"Server shutdown in progress",
"Broken pipe",
@@ -155,6 +157,21 @@ class MysqlAdapter < AbstractAdapter

QUOTED_TRUE, QUOTED_FALSE = '1', '0'

NATIVE_DATABASE_TYPES = {
:primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY KEY".freeze,
:string => { :name => "varchar", :limit => 255 },
:text => { :name => "text" },
:integer => { :name => "int"},
:float => { :name => "float" },
:decimal => { :name => "decimal" },
:datetime => { :name => "datetime" },
:timestamp => { :name => "datetime" },
:time => { :name => "time" },
:date => { :name => "date" },
:binary => { :name => "blob" },
:boolean => { :name => "tinyint", :limit => 1 }
}

def initialize(connection, logger, connection_options, config)
super(connection, logger)
@connection_options, @config = connection_options, config
@@ -163,28 +180,15 @@ def initialize(connection, logger, connection_options, config)
end

def adapter_name #:nodoc:
'MySQL'
ADAPTER_NAME
end

def supports_migrations? #:nodoc:
true
end

def native_database_types #:nodoc:
{
:primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY KEY",
:string => { :name => "varchar", :limit => 255 },
:text => { :name => "text" },
:integer => { :name => "int"},
:float => { :name => "float" },
:decimal => { :name => "decimal" },
:datetime => { :name => "datetime" },
:timestamp => { :name => "datetime" },
:time => { :name => "time" },
:date => { :name => "date" },
:binary => { :name => "blob" },
:boolean => { :name => "tinyint", :limit => 1 }
}
NATIVE_DATABASE_TYPES
end


@@ -238,9 +238,26 @@ module ConnectionAdapters
# * <tt>:min_messages</tt> - An optional client min messages that is used in a <tt>SET client_min_messages TO <min_messages></tt> call on the connection.
# * <tt>:allow_concurrency</tt> - If true, use async query methods so Ruby threads don't deadlock; otherwise, use blocking query methods.
class PostgreSQLAdapter < AbstractAdapter
ADAPTER_NAME = 'PostgreSQL'.freeze

NATIVE_DATABASE_TYPES = {
:primary_key => "serial primary key".freeze,
:string => { :name => "character varying", :limit => 255 },
:text => { :name => "text" },
:integer => { :name => "integer" },
:float => { :name => "float" },
:decimal => { :name => "decimal" },
:datetime => { :name => "timestamp" },
:timestamp => { :name => "timestamp" },
:time => { :name => "time" },
:date => { :name => "date" },
:binary => { :name => "bytea" },
:boolean => { :name => "boolean" }
}

# Returns 'PostgreSQL' as adapter name for identification purposes.
def adapter_name
'PostgreSQL'
ADAPTER_NAME
end

# Initializes and connects a PostgreSQL adapter.
@@ -282,20 +299,7 @@ def disconnect!
end

def native_database_types #:nodoc:
{
:primary_key => "serial primary key",
:string => { :name => "character varying", :limit => 255 },
:text => { :name => "text" },
:integer => { :name => "integer" },
:float => { :name => "float" },
:decimal => { :name => "decimal" },
:datetime => { :name => "timestamp" },
:timestamp => { :name => "timestamp" },
:time => { :name => "time" },
:date => { :name => "date" },
:binary => { :name => "bytea" },
:boolean => { :name => "boolean" }
}
NATIVE_DATABASE_TYPES
end

# Does PostgreSQL support migrations?
@@ -547,7 +547,7 @@ def initialize(connection, table_name, class_name, fixture_path, file_filter = D
@connection, @table_name, @fixture_path, @file_filter = connection, table_name, fixture_path, file_filter
@class_name = class_name ||
(ActiveRecord::Base.pluralize_table_names ? @table_name.singularize.camelize : @table_name.camelize)
@table_name = ActiveRecord::Base.table_name_prefix + @table_name + ActiveRecord::Base.table_name_suffix
@table_name = "#{ActiveRecord::Base.table_name_prefix}#{@table_name}#{ActiveRecord::Base.table_name_suffix}"
@table_name = class_name.table_name if class_name.respond_to?(:table_name)
@connection = class_name.connection if class_name.respond_to?(:connection)
read_fixture_files

0 comments on commit def594b

Please sign in to comment.
You can’t perform that action at this time.