Skip to content

Commit 2224ad5

Browse files
committed
Fix schema limit reflection for char/varchar. Fixes #394.
1 parent 791ae18 commit 2224ad5

File tree

5 files changed

+16
-2
lines changed

5 files changed

+16
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
## v4.2.4
33

44
* Compatible with Rails 4.2.1.
5+
* Fix schema limit reflection for char/varchar. Fixes #394.
56

67

78
## v4.2.3

lib/active_record/connection_adapters/sqlserver/schema_statements.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ def column_definitions(table_name)
235235
columns.DATETIME_PRECISION AS datetime_precision,
236236
columns.ordinal_position,
237237
CASE
238-
WHEN columns.DATA_TYPE IN ('nchar','nvarchar') THEN columns.CHARACTER_MAXIMUM_LENGTH
238+
WHEN columns.DATA_TYPE IN ('nchar','nvarchar','char','varchar') THEN columns.CHARACTER_MAXIMUM_LENGTH
239239
ELSE COL_LENGTH('#{database}'+columns.TABLE_SCHEMA+'.'+columns.TABLE_NAME, columns.COLUMN_NAME)
240240
END AS [length],
241241
CASE

test/cases/specific_schema_test_sqlserver.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ class SpecificSchemaTestSQLServer < ActiveRecord::TestCase
55
after { SSTestEdgeSchema.delete_all }
66

77
it 'handle dollar symbols' do
8-
SSTestDollarTableName.new.save
8+
SSTestDollarTableName.create!
99
SSTestDollarTableName.limit(20).offset(1)
1010
end
1111

12+
it 'handle dot table names' do
13+
SSTestDotTableName.create! name: 'test'
14+
SSTestDotTableName.limit(20).offset(1)
15+
SSTestDotTableName.where(name: 'test').first.must_be :present?
16+
end
17+
1218
it 'models can use tinyint pk tables' do
1319
obj = SSTestTinyintPk.create! name: '1'
1420
obj.id.is_a? Fixnum
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class SSTestDotTableName < ActiveRecord::Base
2+
self.table_name = '[dbo].[some.Name]'
3+
end

test/schema/sqlserver_specific_schema.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
t.uuid :uuid_nil_default, default: nil
4242
end
4343

44+
create_table '[some.Name]', force: true do |t|
45+
t.varchar :name
46+
end
47+
4448
create_table 'sst_my$strange_table', force: true do |t|
4549
t.string :name
4650
end

0 commit comments

Comments
 (0)